以下是我現在面臨的情況。我在我的MVC控制器動作,看起來如下:使用IEnumerable進行AJAX請求的MVC綁定<string>
[HttpPost]
public JsonResult MyAction(int id, IEnumerable<string> strings, bool trueFalse, string anotherString, bool anotherTrueFalse) {}
我訪問此通過jQuery $.ajax
電話如下:
$.ajax({
type: 'POST',
dataType: 'json',
contentType: 'application/json; charset=utf-8',
data: {"id":12345,"strings":["onestring"],"trueFalse":false,"anotherString":"Woo String","anotherTrueFalse":false},
//Success/Error handlers here
});
現在,我看到的問題是這樣的:不管正在發送的數據,id
,trueFalse
,anotherString
和anotherTrueFalse
都正確綁定當我調試我的控制器操作並檢查綁定到我的操作的參數。
的問題是與strings
:如果我發送一個JSON陣列與一個字符串(如上),它永遠不會在我的行動勢必到IEnumerable<string>
。如果我把這樣的東西,而不是:
"strings":["onestring", "twostring"]
然後它被正確綁定爲IEnumerable
有兩個條目。
這是怎麼回事,我錯過了什麼?
注:我剛剛試圖讓映射工作首先,所以它仍然有點混亂。我將通過將所有這五個屬性放入一個視圖模型來清理這個問題,這樣我就只需綁定一個對象 - 這可能會完全解決問題。但是,我仍然很好奇,當JSON數組只有一個條目時,這不起作用。
附錄1:在我上面的AJAX,這基本上是什麼在請求到服務器發送的,但我實際上構建對象,然後將它傳遞給JSON.stringify - 只是試圖使問題聲明儘可能簡單。您看到的是瀏覽器發送給控制器操作的內容。
附錄2:將所有這些屬性放到它們自己的視圖模型中已經清理了一些東西,但綁定問題仍然存在。另外,從IEnumerable<string>
切換到string[]
也會出現相同的問題,所以我基本上忽略了MVC如何爲我們執行模型綁定。
我的答案能幫助你嗎? –
它的確如此,謝謝。我會給你一個贊成票,並且現在把你的答案標記爲答案,除非有其他一些不那麼複雜的解決方案。 – Mattygabe