ASP.NET MVC 2 ExtJs和Ajax将对象数组发布到控制器?

时间:2011-04-05 09:41:56

标签: asp.net-mvc ajax json extjs

我正在开发一个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;
    }

1 个答案:

答案 0 :(得分:2)

到MVC3或不到MVC3

没有特别需要转换为MVC3,因为你也可以在MVC2中使用JSON。有两个实际上有很多种方法:

  1. 使用JsonValueProviderFactory,Phil Haack在his blog post中描述了JsonValueProviderFactory,它将为您提供与使用MVC3完全相同的功能。

  2. 预转换您的客户端数据,以便ExtJS将其正确发送到服务器。这与我对jQuery plugin所做的有些相似。 ExtJS也可以做类似的事情。这两个步骤是实现它的必要步骤:

    • 首先,你需要分析你的JSON对象如何在线上转换(使用Fiddler)

    • 编写将您的JSON转换为将正确发送到服务器的表单的代码。那将是什么形式?您可以在我的previously mentioned blog post

    • 中了解相关信息
  3. 我不知道你是否意识到这一点,但是在这种情况下还有一些名为Ext.Direct for ASP.NET MVC的东西可以帮助你。正如它所说,它支持简单,复杂和数组参数,实际上涵盖了它。

  4. 使用MVC3的唯一优势是默认情况下为您启用Ext.Direct而无需任何其他代码。

    我几年前使用的是ExtJS版本2.当时没有{{1}}和MVC。但我们非常成功地将它与Asp.net WebForms应用程序配对,并使用与使用的Asp.net WebForms应用程序相同的业务+数据层对WCF进行异步调用。