Как выполнить операцию PostBack в ASP.NET MVC? - PullRequest
5 голосов
/ 10 февраля 2010

В mvc страница не возвращается назад, как в asp.net, тогда как мы можем выполнять операции обратной передачи в asp.net mvc2. Например, как выполнить определенное действие, когда кто-то выбирает чек-бокс? Заранее спасибо

Ответы [ 3 ]

6 голосов
/ 10 февраля 2010

Механизм обратной модели в WebForms называется HTTP POST. Вот как пользовательский ввод передается обратно на сервер.

Вы можете сделать это вручную. Прикрепите обработчик JavaScript вручную к событию «onclick» и установите POST-запрос к некоторому URL. Там этот запрос выполнит какое-то действие контроллера, когда вы будете делать то, что хотите. Например, обновите модель (установите / снимите флажок) и верните то же представление, из которого был создан POST. Теперь в представлении будет отображаться другое состояние для флажка.

Механизмы WebForms делают почти то же самое, хотя эти вещи абстрагированы от вас. С ASP.NET MVC вам нужно научиться делать это самостоятельно (что всегда хорошо).

3 голосов
/ 10 февраля 2010

Ваш метод действия MVC на вашем контроллере в некоторой степени является вашим обработчиком 'PostBack'.

Начните с более простого примера; простой пост в формате HTML:

<form action="/MyController/MyAction" method="post">
  <input type="text" name="myName" />
  <input type="submit />
</form>

Теперь в вашем действии контроллеров вы можете получить объявленные значения и выполнить ваши задачи. Когда закончите, верните браузеру то, что ему нужно:

public class MyController: Controller
{
    public ActionResult MyAction(string myName)
    {
        // Do something with myName
        return new ContentResult { Content = "Hello " + myName };
    }
}

Что касается флажка, он отличается. Вам нужно изучить Javascript (jQuery - наиболее используемая библиотека для использования с ним) и опубликовать действие, используя это. Например, вы можете подключиться к флажку 'onclick ()', событие и выполнить XHR - специфическую для браузера операцию Javascript, запись (вы можете использовать jQuery тоже) к вашему контроллеру.

Так что вам нужно начать думать иначе, чем абстракции веб-форм, и начать работать с HTML, HTTP и Javascript.

0 голосов
/ 13 мая 2015

Вы можете поместить это на страницу бритвы MVC:

if (Request.HttpMethod=="POST") {
}
...