在Controller中读取JSON对象

时间:2011-03-25 13:18:09

标签: jquery asp.net-mvc json

我有以下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.如何从控制器中的对象中读取值???

3 个答案:

答案 0 :(得分:2)

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);
}

答案 1 :(得分:1)

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

Deserialize JSON Objects in Asp.Net MVC Controller

答案 2 :(得分:0)

MVC 2在MVC 3的情况下不会将JSON对象转换为模型。

您必须使用JSON.net