控制器。我已經觸輪附近的所有我能找到的關於該主題的問題,但我似乎無法得到它的工作,模型根本不會綁定。
雖然這將是很好能夠綁定到一類實體,我會滿足於僅僅能夠處理「數組的數組」,但即使這似乎並沒有工作。我無法將數組讀取爲控制器參數中的'數組'。
的追求
的HTML頁面用的變量,但潛在的大量的複選框(> 500)需要與每個複選框兩個唯一的引用發送的所有值(假值包括在內)回控制器用於處理。這兩個唯一的引用是複選框的ID的一部分,並在添加到數組之前分開。
問題通過$ajax
呼叫從MVC視圖發帖時
,數據被字符串化(通過JSON.stringify()
)的控制器響應並初始化chkBox
實體類的適當數量,但不填充類實例的屬性。 (即我得到n個chkBox
實體的所有設置爲null
所有屬性
提琴手驗證值才能發佈,以JSON格式,如果我寫我自己我ModelBinder的價值觀做流中顯示出來,所以數值實際上獲得通過到控制器
如果我將一組三個單獨的值傳遞給控制器,則會發生同樣的情況,但是如果我將三組值作爲單個數組傳遞,則控制器將以單個chkBox
實體響應,但全部三個物業值設置爲null
。
JAV ascript函數創建JS 'chkBox對象'
function chkBox(unqReference_01, unqReference_02, boolean) {
this.unqReference_01 = unqReference_01;
this.unqReference_02= unqReference_02;
this.IsChecked = boolean;
}
的Javascript鑑於
var _chkBoxes = [];
$("input:checkbox[name^='chkCompetitor']").each(function() {
if (_chkBoxes.length < 5) {
var splitID = $(this).attr('id').split("_");
var entry = new chkBox(splitID[1], splitID[2], true);
if (_chkBoxes.indexOf(entry) == -1) {
_chkBoxes.push(entry);
}
}
});
//Submit _chkBoxes
var updateMatrix = $.ajax({
type: "POST",
dataType: 'json',
contentType: 'application/json; charset=utf-8',
//traditional: true,
url: '/Processing/updateMatrix',
data: JSON.stringify(_chkBoxes)
});
原類:(在所產生的不正確的行爲之一)
[SerializableAttribute]
public class chkBox
{
String unqReference_01 { get; set; }
String unqReference_02 { get; set; }
String IsChecked { get; set; }
public chkBox()
{
}
}
編輯:解決方案(太簡單了)
將所有類屬性設置爲public ...
編輯後的類別:
[SerializableAttribute]
public class chkBox
{
public String unqReference_01 { get; set; }
public String unqReference_02 { get; set; }
public String IsChecked { get; set; }
public chkBox()
{
}
}
控制器:
[HttpPost]
public JsonResult UpdateMatrix(General.chkBox[] chkBoxes)
//public JsonResult UpdateMatrix(IEnumerable<General.chkBox> chkBoxes)
//public JsonResult UpdateMatrix(string IsChecked, String unqReference_01, String unqReference_01)
{
return null;
}
使用:
- ASP.NET MVC 5.2.3
- EF 6.2.0
- 的jQuery 3.2.1
閱讀&嘗試:
- MVC3 & JSON.stringify() ModelBinding returns null model
- ASP.NET MVC3 JSON Model-binding with nested class
- ModelBindingContext.ValueProvider.GetValue(bindingContext.ModelName) returns null
- ASP.NET MVC3 JSON Model-binding with nested class
- ModelBinding not deserializing json
- Post JSON array to mvc controller
- https://haacked.com/archive/2011/06/30/whatrsquos-the-difference-between-a-value-provider-and-model-binder.aspx/
頭截圖
請注意,標題使用類&屬性的實際名稱,屬性相匹配兩端(即在JSON和類) uBoatKey = unqReference_01 uDivisionRaceKey = unqReference_02
如果您打開Chrome控制檯,請求中實際發送了什麼? –
嗨@CamiloTerevinto, 不知道你指的是什麼,我大多使用FireFox(或Chrome),但如果我用Fiddler檢查請求,我得到以下標題: POST/Processing/updateMatrix HTTP/1.1 Host:localhost:44352 User-Agent:Mozilla/5.0(Windows NT 6.1; Win64; x64; rv:57.0)Gecko/20100101 Firefox/57.0 接受:application/json,text/javascript,*/*; q = 0.01 Accept-Language:zh-CN,en; q = 0。5 Referer:https:// localhost:44352/Processing/ProcessEvent/c1cf6457-eb61-434a-98f9-0137d384 __RequestVerificationToken: Content-Type:application/json; charset = utf-8 X-Requested-With:XMLHttpRequest – mtholen
我從頭文件中刪除了一些文本,因爲它太長而無法發佈爲評論。 – mtholen