1
我有動態生成的表單,所以我需要處理傳遞給控制器的未知數量的輸入。可以沒有預定義的模型(我假設)來處理這個,所以我認爲發送一個json字符串可能是最好的。將表單作爲json傳遞給控制器並解析
問題是解析控制器中的json到JObject。
這是我在使用ajax請求提交之前使用的。
var json = JSON.stringify($(this).serialize());
現在傳遞給控制器的字符串如下所示
"\"__RequestVerificationToken=FGhUgZXRTWcDqC-ffeMb7S2paAgFSUN4XyJl72qu85TD1GPpi69aGiyHzXBfHpb6XgBrGXAhtJz6NWka0XGK_JRSqpm-Q41tiYvJe1NO3J-_4leHroUvDp3VsWYMLFMm0&Form.ID=d7025ad7-745b-4898-ad40-350ef1d511ec&a5fbdde8-4c34-48e2-9a77-083c31eb1ae1=This+is+a+test\""
在控制器
JObject jo = JObject.Parse(json); //error
foreach (var o in jo)
{
string key = o.Key;
JToken val = o.Value;
}
錯誤我得到
"Error reading JObject from JsonReader. Current JsonReader item is not an object: String. Path ''
爲什麼你必須使用JSON?這似乎是一個不必要的複雜。 'x-www-form-urlencoded'非常標準 - 尤其對於非AJAX請求 –
@RoryMcCrossan你能舉一個例子嗎?這是通過ajax提交的。控制器無法使用預定義的模型,因爲控制器未知輸入。正在發送的數據使用輸入的ID作爲密鑰。 – Tsukasa
您對一個字符串(['serialize'](http://api.jquery.com/serialize/))的結果調用JSON.stringify。因此,當您解析JSON時,會返回一個字符串,如錯誤所述。請參閱[使用jQuery將表單數據轉換爲JavaScript對象](http://stackoverflow.com/q/1184624/215552)瞭解如何從表單數據創建對象。 –