JQuery AJAX формы для ASP.NET MVC 3 - PullRequest
12 голосов
/ 14 февраля 2011

это может быть простой вопрос, но для меня сейчас это непонятно, и мне нужно отсортировать вещи в моей голове ... может быть, кто-то может помочь мне с этим =) ...

Iзнаю, что MVC поставляется с помощниками Ajax.Я знаю, что есть библиотека Microsoft, а также есть jquery.Я знаю, что в MVC 3 они представили ненавязчивый javascript, который добавляет некоторые специальные теги в html для очистки ...

, но как играть вместе?

Пример: я хочу опубликовать удаленную форму(частичное представление) за ajax, чтобы добавить комментарии к сообщению в блоге.без публикации всей страницы.

в моем частичном просмотре я бы использовал Ajax.BeginForm() это тогда MvcAjax или Jquery?Или я бы использовал Html.BeginForm() и зарегистрировал бы что-то вроде $ .post в событии click формы.Это также может иметь запасной вариант обычного HTML, если JavaScript отключен или не поддерживается ....

Или вообще, когда использовать что для публикации комментариев к сообщению в блоге? ... и я предполагаю, что этоправильно, что я публикую в действии create контроллера комментариев, и я буду использовать JsonModelBinder для преобразования его в модель.После этого я вернул бы Джсона и добавил бы его в свой список комментариев ...

Разумно ли это делать?

1 Ответ

30 голосов
/ 14 февраля 2011

Ajax.BeginForm () это тогда MvcAjax или Jquery?

По умолчанию это jquery. Вам нужно сослаться на скрипт jquery.unobtrusive-ajax.js, чтобы это работало.

Или я бы использовал Html.BeginForm () и зарегистрировал что-то вроде $ .post в событии click формы.

Это альтернатива. Лично это то, что я делаю.

Я предполагаю, что это правильно, что я отправляю сообщение в действие create контроллера комментариев, и я бы использовал JsonModelBinder, чтобы преобразовать его в модель. После этого я вернул бы Джсона и добавил бы его в свой список комментариев ...

JsonModelBinder был представлен в ASP.NET MVC 3 и позволяет отправлять строку JSON в действие контроллера, которое будет отображаться обратно в модель представления. Например, если у вас есть следующая модель вида:

public class PersonViewModel
{
    public string Name { get; set; }
    public int Age { get; set; }
}

и следующее действие:

public ActionResult Foo(PersonViewModel person) 
{
    ...    
}

традиционный способ вызвать его в AJAX:

$.ajax({
    url: '@Url.Action("foo")',
    type: 'POST',
    data: { name: 'john', age: 20 },
    success: function(result) {
        // TODO:
    }
});

и в ASP.NET MVC 3 вы можете отправить JSON в качестве параметра запроса, который будет привязан к параметру действия PersonViewModel:

$.ajax({
    url: '@Url.Action("foo")',
    type: 'POST',
    contentType: 'application/json',
    data: JSON.stringify({ name: 'john', age: 20 }),
    success: function(result) {
        // TODO:
    }
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...