Подтвердить что ты не робот

Формы jquery ajax для ASP.NET MVC 3

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

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

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

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

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

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

Насколько разумно это делать?

4b9b3361

Ответ 1

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

По умолчанию это jquery. Для этого вам нужно обратиться к jquery.unobtrusive-ajax.js script.

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

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

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

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:
    }
});