[英]MVC How To Pass Array(Guid CustomerIDs) And a Single Value To Controller
我正在使用JavaScript和Ajax將數組和單個值傳遞給控制器,當調用被調用的控制器方法時,傳遞的是單個值而不是(customerID的數組),我想知道為什么,這是代碼!
這是我的JavaScript和Ajax調用:
var arrayOfCustomerID = ['11111111 - 1111 - 1111 - 1111 - 111111111112', '4b732df8-3bbc-4eab-9bf1-da98cc46d527' ,
'3e74adeb-31a8-4d6f-a66b-a34500c3acc0',' 14897bf4-f5d0-4548-a74d-a34f00ae9cad'];
var version = '3.0';
$.ajax({
url: '/Updates/UpdateCustomers',
type: "POST",
datatype: "json",
traditional: true,
data: {
CustomerIDs: JSON.stringify(arrayOfCustomerID),
Version: version
},
success: function (data) {
alert("success");
}
});
這是我的課:
public class SelectedCustomersWithVersion
{
public List<Guid> CustomerIDs { get; set; }
public string version { get; set; }
}
最后是我的控制器方法:
[HttpPost]
public ActionResult UpdateCustomers(SelectedCustomersWithVersion model)
{
IList a = model.CustomerIDs.ToList();
var b = model.version;
return view();
}
當我在控制器模型上設置一個斷點時,我得到了model.CustomerIds:Count = 0,model.Version:“ 3.0”
我不知道為什么要獲得Customerids = 0計數,代碼有問題嗎? 感謝幫助 !
這是由於您將參數傳遞給action方法的方式。 在當前方法中,您將它們作為一個參數發送,並以逗號分隔的字符串形式接收,而活頁夾不會將其轉換為List<Guid>
。
以下Fiddler捕獲顯示了如何發送參數:
為了使模型綁定器正確綁定List<T>
,需要使用相同的名稱或分配的索引分別發送參數。
例如,以下兩種方法都將起作用:
?customerIDs=1111...&customerIDs=4b73...&customerIDs=3e...
?customerIDs[0]=1111...&customerIDs[1]=4b73...&customerIDs[2]=3e...
在第二個示例中,索引必須從零開始且無間隙。
為了使它起作用,您可以將jQuery代碼更改為:
arrayOfCustomerID = [];
arrayOfCustomerID[0] = '11111111 - 1111 - 1111 - 1111 - 111111111112';
arrayOfCustomerID[1] = '4b732df8-3bbc-4eab-9bf1-da98cc46d527';
arrayOfCustomerID[2] = '3e74adeb-31a8-4d6f-a66b-a34500c3acc0';
arrayOfCustomerID[3] = ' 14897bf4-f5d0-4548-a74d-a34f00ae9cad';
var version = '3.0';
$.ajax({
url: '/api/values',
type: "POST",
datatype: "json",
traditional: true,
data: {
CustomerIDs: arrayOfCustomerID,
Version: version
},
success: function (data) {
alert("success");
}
});
這將發送如下參數:
然后將成功綁定到您的模型:
最后一點,我必須從您的第一個Guid
中刪除空格以使其綁定。
我認為MVC無法自動將字符串數組(客戶端)綁定到GUID數組(服務器端)。
嘗試將視圖模型( SelectedCustomersWithVersion
)更改為使用字符串。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.