我正在开发一个ASP.NET MVC2 Web应用程序 我想使用AJAX从我的视图代码中向控制器发送一组JSON对象 我已经看到很多使用jquery来做到这一点的例子 但是我想知道如何在不使用jquery的情况下使用Ajax请求来执行此操作? 我已经读过,更新到MVC3可能有所帮助,如果这是最好的解决方案,你能指出我如何从MVC2更新到MVC3的正确方向吗?
以下是一些示例代码:
查看
var modRecords = store.getModifiedRecords();
Ext.Ajax.request({
url: AppRootPath +'EmployeeDetails/SetSAASUser',
params: {
users: modRecords
}
});
CONTROLLER
public JsonResult SetUser(IEnumerable<User> users)
{
GetData data = delegate
{
return Repo.SetUser(users);
};
JsonResultBase jsonResult = GetJsonResult(data);
JsonResult json = PortalJsonResult(jsonResult, JsonRequestBehavior.AllowGet);
return json;
}
答案 0 :(得分:2)
没有特别需要转换为MVC3,因为你也可以在MVC2中使用JSON。有两个实际上有很多种方法:
使用JsonValueProviderFactory
,Phil Haack在his blog post中描述了JsonValueProviderFactory
,它将为您提供与使用MVC3完全相同的功能。
预转换您的客户端数据,以便ExtJS将其正确发送到服务器。这与我对jQuery plugin所做的有些相似。 ExtJS也可以做类似的事情。这两个步骤是实现它的必要步骤:
首先,你需要分析你的JSON对象如何在线上转换(使用Fiddler)
编写将您的JSON转换为将正确发送到服务器的表单的代码。那将是什么形式?您可以在我的previously mentioned blog post。
我不知道你是否意识到这一点,但是在这种情况下还有一些名为Ext.Direct for ASP.NET MVC的东西可以帮助你。正如它所说,它支持简单,复杂和数组参数,实际上涵盖了它。
使用MVC3的唯一优势是默认情况下为您启用Ext.Direct
而无需任何其他代码。
我几年前使用的是ExtJS版本2.当时没有{{1}}和MVC。但我们非常成功地将它与Asp.net WebForms应用程序配对,并使用与使用的Asp.net WebForms应用程序相同的业务+数据层对WCF进行异步调用。