簡體   English   中英

MVC如何將數組(Guid CustomerID)和單個值傳遞給控制器

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM