我知道MVC带有Ajax助手.
我知道有微软库,还有jquery.
我知道,使用MVC 3,他们引入了不引人注目的JavaScript,它为HTML添加了一些特殊的标签…
但ist如何一起玩?
示例:我想发布一个远程表单(部分视图)每个ajax添加评论到博客文章.没有发布整个页面.
在我的部分视图中,我会使用Ajax.BeginForm()这是MvcAjax还是Jquery?
或者我将使用Html.BeginForm()并在窗体的点击事件上注册$.post.如果javascript被禁用或不支持,这也将有一个简单的html的回退….
或者一般来说,什么时候使用什么来发布评论到博客文章?我假设它是正确的,我发布到评论控制台的创建动作,我将使用JsonModelBinder将其转换为模型.之后,我会返回Json,并将其附加到我的评论列表…
这是合理的吗?
解决方法
Ajax.BeginForm() is this then MvcAjax or Jquery?
默认情况下是jquery.您需要引用jquery.unobtrusive-ajax.js脚本才能使其工作.
Or would I use Html.BeginForm() and register something like $.post on the click event of the Form.
这是另一种选择.就我个人而言
I assume that it is correct,that I am posting to the create action of the commentscontroller and I would use the JsonModelBinder to transform it to a model. After that I would return Json and would append it to my comments list…
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")',contentType: 'application/json',data: JSON.stringify({ name: 'john',age: 20 }),success: function(result) { // TODO: } });