【问题标题】:Read JSON object in Controller在 Controller 中读取 JSON 对象
【发布时间】:2011-03-25 13:18:08
【问题描述】:

我有以下 JQuery 代码;

var selectedval = $("#PaymentApplication_System").val();
var text = $("#btnSave").val();
var payVal = $("#PaymentApplication_Amount").val();
var dbobj = [{ param: text, value: payVal}];
var jlist = $.toJSON(dbobj);

这给了我以下 json 对象;

[{"param":"Update Payment","value":"50.00"}]

我正在使用 MVC 2。如何从控制器中的对象读取值???

【问题讨论】:

    标签: jquery asp.net-mvc json


    【解决方案1】:

    MVC 2 不会自动将您的 JSON 字符串转换为 C# 对象。您可以使用位于 System.Web.Script.Serialization 中的JavaScriptSerializer。示例:

    public ActionResult Index(string customerJson)
    {
        var serializer = new JavaScriptSerializer();
        var customer = serializer.Deserialize<Customer>(customerJson);
    
        return View(customer);
    }
    

    这作为一个扩展方法会做得很好(或者如果你有的话,把它放在一个基本控制器中):

    public static class ControllerExtensions
    {
        public T JsonDeserialize<T>(this Controller instance, string json)
        {
            var serializer = new JavaScriptSerializer();
            return serializer.Deserialize<T>(json);
        }
    }
    

    然后您可以将其用作:

    public ActionResult Index(string customerJson)
    {
        var customer = this.JsonDeserialize<Customer>(customerJson);
    
        return View(customer);
    }
    

    【讨论】:

    • 仅供参考 MVC3 确实包含一个自动处理此问题的 JsonValueProviderFactory。
    • @murki 是的,我知道。这个问题是针对 MVC2 的,它不处理这个问题。
    【解决方案2】:

    我认为这篇文章可以帮助遇到类似问题:

    Deserialize JSON Objects in Asp.Net MVC Controller

    【讨论】:

      【解决方案3】:

      MVC 2 不会将 JSON 对象转换为模型,而 MVC 3 会。

      你必须使用JSON.net

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2013-07-10
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-12-14
        • 2013-07-29
        • 2020-12-30
        相关资源
        最近更新 更多