Код вызова функций с элементами управления html

У меня есть простая функция, которую я хочу вызвать в коде за именем файла Move и я пытался увидеть, как это можно сделать, и я не использую кнопку изображения asp, потому что не пытаюсь использовать элементы управления на стороне сервера asp, поскольку они, как правило, плохо работают с ASP.net MVC .. способ, которым он настроен сейчас, будет ищите функцию javascript с именем Move, но я хочу, чтобы она вызывала функцию с именем move в коде за тем же представлением

 <img alt='move' id = "Move" src = "/Content/img/hPrevious.png" onclick = "Move()"/>


protected void Move(){

}

// на основе критериев поиска обновляем новую таблицу

 protected void Search(object sender EventArgs e)
{
 for (int i = 0; i < data.Count; i++){
 HtmlTableRow row = new HtmlTableRow();
 HtmlTableCell CheckCell = new HtmlTableCell();
 HtmlTableCell firstCell = new HtmlTableCell();
 HtmlTableCell SecondCell = new HtmlTableCell();
 CheckBox Check = new CheckBox();
 Check.ID = data[i].ID;
 CheckCell.Controls.Add(Check);
 lbl1.Text = data[i].Date;
 lbl2.Text = data[i].Name;
  row.Cells.Add(CheckCell);
  row.Cells.Add(firstCell);
  row.Cells.Add(SecondCell); 
  Table.Rows.Add(row);
}

}

Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Введение в CSS
Введение в CSS
CSS является неотъемлемой частью трех основных составляющих front-end веб-разработки.
Как выровнять Div по центру?
Как выровнять Div по центру?
Чтобы выровнять элемент <div>по горизонтали и вертикали с помощью CSS, можно использовать комбинацию свойств и значений CSS. Вот несколько методов,...
Навигация по приложениям React: Исчерпывающее руководство по React Router
Навигация по приложениям React: Исчерпывающее руководство по React Router
React Router стала незаменимой библиотекой для создания одностраничных приложений с навигацией в React. В этой статье блога мы подробно рассмотрим...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
Toor - Ангулярный шаблон для бронирования путешествий
Toor - Ангулярный шаблон для бронирования путешествий
Toor - Travel Booking Angular Template один из лучших Travel & Tour booking template in the world. 30+ валидированных HTML5 страниц, которые помогут...
0
0
5 380
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Вы не можете выполнять обратные передачи или вызывать что-либо в представлении из JavaScript в приложении ASP.NET MVC. Все, что вы хотите вызвать из JavaScript, должно быть действием на контроллере. Трудно сказать больше, не имея более подробной информации о том, что вы пытаетесь сделать, но если вы хотите вызвать какой-либо метод «Move» в своем веб-приложении из JavaScript, тогда «Move» должно быть действием на контроллере.

Основываясь на комментариях, я собираюсь обновить этот ответ более полным описанием того, как вы можете реализовать то, что я понимаю как проблему, описанную в вопросе. Однако в этом вопросе отсутствует довольно много информации, поэтому я предполагаю здесь. Надеюсь, общая идея будет реализована, даже если некоторые детали не соответствуют точному коду TStamper.

Начнем с действия контроллера:

public ActionResult ShowMyPage();
{
    return View();
}

Теперь я знаю, что хочу повторно отобразить эту страницу, и для этого использую аргумент, переданный из функции JavaScript на странице. Поскольку я снова буду отображать ту же страницу, я просто изменю действие, чтобы принять аргумент. Строковые аргументы допускают значение NULL, поэтому я могу продолжить первоначальное отображение страницы, как всегда, не беспокоясь об указании какого-либо значения по умолчанию для аргумента. Вот новая версия:

public ActionResult ShowMyPage(string searchQuery);
{
    ViewData["SearchQuery"] = searchQuery;
    return View();
}

Теперь мне нужно снова вызвать эту страницу в JavaScript. Поэтому я использую тот же URL-адрес, который использовался для первоначального отображения страницы, но добавляю параметр строки запроса с именем таблицы:

http://example.com/MyControllerName/ShowMyPage?searchQuery=tableName

Наконец, в моем aspx я могу вызвать код функции, передав запрос searchQuery из данных представления. Еще раз, у меня есть серьезные сомнения по поводу использования кода в приложении MVC, но это сработает.

Как вызвать функцию кода программной части в aspx:

<% Search(ViewData["searchQuery"]); %>

Я изменил аргументы. Поскольку вы не обрабатываете событие (за некоторыми исключениями, такими как Page_Load, их нет в MVC), функции поиска не требуется подпись обработчика событий. Но я добавил аргумент «tablename», чтобы вы могли передать его из aspx.

Я еще раз выражу свои сомнения по поводу того, чтобы делать это в программном коде. Мне кажется, что вы пытаетесь использовать стандартные методы ASP.NET внутри инфраструктуры MVC, когда MVC работает по-другому. Я настоятельно рекомендую просмотреть учебные материалы по MVC, чтобы увидеть примеры более стандартных способов выполнения подобных задач.

да, я знаю, как вызвать его из контроллера, который будет $ .post ("Move" {}); есть ли способ заставить это перейти к коду того же представления

TStamper 18.12.2008 23:08

Я пытаюсь сделать то, что я динамически привязываю таблицу в доде позади, и я выполняю пейджинг из БД, поэтому, когда нажимается img of next, я хочу, чтобы это запускало действие в коде позади, чтобы повторно привязать новую таблицу в код позади. от контроллера, как бы я привязался к таблице, которая находится в представлении

TStamper 18.12.2008 23:18

Я обновил первый вопрос, чтобы показать, как я связываю таблицу в методе поиска с помощью кнопки asp:

TStamper 18.12.2008 23:19

Что ж, у меня есть оговорки по поводу использования скрытого кода в приложении MVC, вы можете заставить это работать. Добавьте аргумент к действию для имени таблицы. Вызовите то же действие в своем сообщении, передав новое имя таблицы в качестве аргумента.

Craig Stuntz 18.12.2008 23:21

? Я не понимаю, что вы говорите делать

TStamper 18.12.2008 23:46

Хорошо, это больше, чем я могу вместить в комментарий, поэтому я обновлю ответ.

Craig Stuntz 19.12.2008 00:31

Конечно, нет; это example.com! Я просто демонстрирую синтаксис параметра строки запроса, а не создаю сайт для вас.

Craig Stuntz 19.12.2008 00:42

Я думал, вы собираетесь показать, как вызвать код функции?

TStamper 19.12.2008 00:44

Я пытаюсь это сделать, и когда я запускаю свой код ... программа запускает метод автоматически, и я хочу, чтобы он делал это только при щелчке по событию, например <a href = "#" class = "move" id = "A1" onclick = "<% Search ();%>"> <% = Move%> </a>

TStamper 19.12.2008 01:09

Еще раз: вы не можете вызвать метод кода программной части непосредственно из события щелчка. MVC так не работает. Есть постбэки нет.

Craig Stuntz 19.12.2008 01:39

о, хорошо .. Я думаю, я не заметил эту часть?

TStamper 19.12.2008 17:17
Ответ принят как подходящий

У Скотта Гатри есть очень хороший пример о том, как это сделать с помощью правил маршрутизации.

Это даст вам возможность переходить по URL-адресу в формате / Search / [Query] / [PageNumber], например http: // site / Search / Hippopotamus / 3, и отобразит страницу 3 результатов поиска для бегемота.

Затем, по вашему мнению, просто сделайте следующую кнопку, указывающую на «http: // site / Search / Hippopotamus / 4», без использования javascript.

Конечно, если вы хотите использовать javascript, вы можете сделать что-то вроде этого:

function Move() {
    var href = 'http://blah/Search/Hippopotamus/2';
    var slashPos = href.lastIndexOf('/');
    var page = parseInt(href.substring(slashPos + 1, href.length));
    href = href.substring(0, slashPos + 1);

    window.location = href + (++page);
}

Но это намного сложнее, чем просто увеличение параметра номера страницы в контроллере и установка URL-адреса следующей кнопки.

это помогло мне понять, что нужно подходить к этому по-другому .. Спасибо

TStamper 19.12.2008 20:40

Другие вопросы по теме