这可能是一个简单的问题,但对我来说目前还不清楚,我必须把事情整理好……也许有人可以帮我解决这个问题)。
我知道AVC附带了MVC。我知道有Microsoft库,还有jquery。我知道,在MVC 3中,他们引入了不引人注目的javascript,它为html添加了一些特殊标签以进行清理…
但是ist如何一起玩?
示例:我想为每个ajax发布一个远程表单(局部视图)以向博客文章添加评论。而不回发整个页面。
在我的局部视图中,我将使用Ajax.BeginForm()MvcAjax还是Jquery?还是我会Html.BeginForm()在表单的click事件上使用并注册$ .post之类的东西。如果禁用了javascript或不支持javascript,这也将是纯HTML的备用…。
Ajax.BeginForm()
Html.BeginForm()
还是一般来说,什么时候使用什么来向博客文章中发布评论?…并且我认为这是正确的,我要发布到commentscontroller的create动作,并且我将使用JsonModelBinder将其转换为模型。之后,我将返回Json并将其添加到我的评论列表中…
这是合理的原因吗?
那么Ajax.BeginForm()是MvcAjax还是Jquery?
默认情况下是jquery。您需要引用jquery.unobtrusive-ajax.js脚本才能使其工作。
jquery.unobtrusive-ajax.js
还是我将使用Html.BeginForm()并在Form的click事件上注册类似$ .post之类的东西。
那是另一种选择。我个人就是这么做的。
我认为这是正确的,我要发布到commentscontroller的create动作,并且我将使用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作为请求参数,该参数将绑定到PersonViewModelaction参数:
PersonViewModel
$.ajax({ url: '@Url.Action("foo")', type: 'POST', contentType: 'application/json', data: JSON.stringify({ name: 'john', age: 20 }), success: function(result) { // TODO: } });