ASP.NET MVC 3的jquery ajax表单

这可能是一个简单的问题,但对我来说现在还不清楚,我必须把事情分类在我脑海里……也许有人可以帮助我=)…

我知道MVC附带了Ajax Helpers。 我知道有Microsoft库,还有jquery。 我知道在MVC 3中他们引入了不引人注目的javascript,它为html添加了一些特殊的标签,用于清洁……

但是怎么一起玩?

示例:我想根据ajax发布远程表单(部分视图)以向博客post添加评论。 没有发回整个页面。

在我的Partial View中我会使用Ajax.BeginForm()是MvcAjax还是Jquery? 或者我会使用Html.BeginForm()并在Form的click事件上注册类似$ .post的内容。 如果javascript被禁用或不受支持,这也会有普通html的后备….

或者一般来说什么时候使用什么发布评论到博客文章?…我认为它是正确的,我发布到commentscontroller的创建动作,我会使用JsonModelBinder将其转换为模型。 之后我会返回Json并将其附加到我的评论列表中……

这样做是否合理?

Ajax.BeginForm()是MvcAjax还是Jquery?

默认情况下它是jquery。 您需要引用jquery.unobtrusive-ajax.js脚本才能使其正常工作。

或者我会使用Html.BeginForm()并在Form的click事件上注册类似$ .post的内容。

那是另一种选择。 就个人而言,这就是我的工作。

我假设它是正确的,我发布到commentscontroller的创建操作,我将使用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: } });