Ответ 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:
}
});