我有一个表单,我想通过Ajax提交。此表单存储在部分视图中,因此整个部分视图表示单个窗体。
我用foreach循环生成了其中的10个表单:
@foreach (Product p in Model.Products)
{
@Html.Partial("_EditProduct", p)
}这个很好用。
在_EditProduct部分视图中,我有:
@using (Ajax.BeginForm("Update", "Product", new AjaxOptions { UpdateTargetId = "updateStatus" })) {
<span id="updateStatus">Update will go here</span> }
// Product fields
<div>
<input type="submit" value="Update" class="btn"/>
</div>
}单击submit按钮向控制器发帖:
[HttpPost]
public JsonResult Update(int id, FormCollection collection)
{
ProductService pService = new ProductService();
Product p =pService.Find(id);
UpdateModel(p);
return Json(p);
}这将更新产品,但由于序列化错误而返回崩溃。
主要的问题是我很难在MVC 3上找到一个好的资源,特别是Ajax部分。教程和博客似乎以一种非常不同的方式做每件事。理想情况下,我希望尽可能多地使用.NET和MVC 3功能,而不是编写大量的jQuery/JavaScript。
谢谢
编辑:只是想补充一下,我想远离
发布于 2011-04-20 13:46:42
关于序列化error...iirc,如果您在Product中有延迟加载的属性,并且db连接关闭了,它将抛出。您可以像返回Json(新的{product.a、product.b、product.c})等。
发布于 2011-04-20 12:27:26
自从第一个版本以来,MVC就一直有Ajax助手。这些允许您生成“ajax支持的”html elements.However,在ASP.NET MVC 3中,这些帮助已经得到了显著的改进。他们不再依赖MS客户端库来完成他们的工作,而是使用jQuery和MVC3附带的不引人注目的jQuery扩展。他们还使用HTML5数据属性来用元数据对特定元素进行注释,而不是定义内联脚本。
上面的示例现在使用MVC3生成以下标记:

因此,包含jQuery和jQuery.unobtrusion-ajax脚本,并在启用时使用javascript提交表单。
还请看一下http://dotmac.rationalmind.net/2011/03/basic-ajax-with-mvc3-razor/
发布于 2011-04-21 20:51:32
Asp.net MVC和Ajax
正如@Dipti所提到的,自Ajax以来,Asp.net MVC中就内置了一些V1助手,但我想指出的是,这并不是唯一的方法(在我看来,并没有多少开发人员使用这种功能)。
那么,在Ajax方面还有什么呢?井。您可以使用通常的Html助手并编写相当简单的jQuery代码。通过这种方式,您可以完全控制客户端处理(无论是特殊的数据格式设置,还是准备发送到服务器的复杂对象等)。
但基本上,我还想向您介绍一些博客文章,这些文章将向您展示在开发Asp.net MVC + Ajax应用程序时可能遇到的一些非常有用的日常场景:
https://stackoverflow.com/questions/5730085
复制相似问题