2011-03-25 98 views
0

我有以下JQuery代码;阅读控制器中的JSON对象

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

回答

0

在MVC 3中,MVC 2不会将JSON对象转换为模型。您必须使用JSON.net

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

+1为扩展方法。 – Aliostad 2011-03-25 13:27:27

+0

FYI MVC3确实包含一个JsonValueProviderFactory,它可以自动处理这个问题。 – murki 2011-03-25 17:26:31

+0

@murki是的,我知道。这个问题是针对MVC2的,它不涉及这个问题。 – alexn 2011-03-25 17:28:52