![](/img/trans.png)
[英]How to pass array in a JSON object from javascript to asp.net mvc controller method?
[英]How to pass json as object to ASP.NET MVC controller?
我有動作
[HttpGet]
public ActionResult Index(MyObject obj)
{
return View(obj);
}
和一個對象:
[JsonObject(MemberSerialization = MemberSerialization.OptIn)]
public class MyObject
{
[JsonProperty(PropertyName = "someString")]
public String SomeString
{
get { return _someString; }
set { _someString = value; }
}
[JsonProperty(PropertyName = "someDictionary")]
public IDictionary SomeDictionary
{
get { return _someDictionary; }
set { _someDictionary = value; }
}
public MyObject()
{
}
private String _someString;
private IDictionary _someDictionary;
}
我想通過url將該對象傳遞給動作。 所以我創建網址:
String url = controller.Url.Action("Index", "SomeController");
url += "?obj=" + JsonConvert.SerializeObject(myObjectInstance);
它使用json創建了一個URL,但是當我使用它時-url中的對象為null。
有誰能夠幫助我?
謝謝!
更新:共享我的MyObject實例作為對評論的反應:
MyObject myObjectInstance = new MyObject ();
myObjectInstance.SomeString = "Hello";
myObjectInstance.SomeDictionary = new Dictionary<String, Object>
{
{"firstKey","value"},
{"secondValue",5}
}
modelbinder能夠反序列化JSON。 換句話說,您不需要做任何特別的事情。 如果您的請求主體由JSON組成(請注意,您不是JSON 字符串 ,而是具有JSON mimetype的實際JSON對象),則只要它可以將數據綁定到action參數,它就可以。 換句話說,您要做的就是構造一個或多個C#類來表示JSON對象。 例如,給定一個JSON對象,例如:
{
'foo': 'bar',
'bar': 1
}
您需要一個類似的課程:
public class MyClass
{
public string Foo { get; set; }
public int Bar { get; set; }
}
然后,進入您的動作簽名:
public ActionResult MyAction(MyClass foo)
modelbinder將更新MyClass
的實例,並將JSON數據綁定到相關屬性上。
除了絕對不要進行這種殘酷的行為(您應該僅在鏈接中傳遞對象的ID)之外……從技術上講,您可以通過以下方式進行操作:
public ActionResult Index(string myObjectJson)
{
var myObject = Json.Deserialize<MyObject>(myObjectJson);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.