1
我故意儘量不使用控制器參數的綁定,所以我有一個控制器,看起來像:發佈JSON到MVC控制器 - 字符串參數爲null
[HttpPost]
public ActionResult UntypedForm(String serializedformdata)
{
//// ...
}
當我發佈系列化的JSON形式元素到控制器用以下代碼:
var formelements = $('#form').serializeArray();
$.post(url, formelements, function (data) {
}, "json").error(function() {
alert("Error posting to " + url);
});
我得到一個NULL值爲我的控制器上的字符串serializedformdata。但是,當我用強類型對象替換String serializedformdata時,綁定按預期正常工作。
我的控制器的全部內容是通用的JSON帖子,我將創建一個BSON文檔放入Mongo數據庫。所以....我故意不想模型綁定,我想序列化的字符串作爲pamameter。爲什麼我發佈的serializedform數據字符串爲空?
注 - 我也試圖結合辭典
public ActionResult UntypedForm(Dictionary<string,string> serializedformdata)
{
//// ...
}
但serializedformdata仍然是空。
但不與「JSON」的說法進行了自己的字串張貼?我看到你的觀點並同意serializeArray創建一個JS對象,但是肯定該對象是通過post來序列化的? – goldfinger
@goldfinger是的,它是通過發佈序列化的,但它沒有以你想要的方式序列化。 JSON密鑰必須與Action的參數匹配。所以,你可以翻轉我的方法,並將你的動作參數改變爲表單中的'name'屬性,這也應該起作用。 – McGarnagle
很好的解釋 - 非常感謝! – goldfinger