[英]MVC Model binding not working as expected on complex type from AJAX request
[英]MVC Model Binding Complex Type to Action Parameter
我正在使用MVC3的模型綁定將客戶列表綁定到客戶搜索結果頁面,並使用Razor在foreach循環中呈現所有客戶。 我的問題是如何將客戶對象發送回操作以節省我不得不再次獲取詳細信息。
以下是我的動作方法簽名:
public ActionResult BasketAddCustomer(Customer customer)
Customer對象非常大,即。 很多領域
下面是視圖的縮減版本,它呈現每個客戶並有按鈕來選擇每個客戶。
@model WebUI.Models.SearchModel
@foreach (var customer in Model.Customers)
{
<h5>@customer.FirstName @customer.LastName</h5>
<button onclick="window.location.href = '@Url.Action("BasketAddCustomer", "Cust", customer)';">Select customer</button>
}
這樣做的問題在於,傳遞給操作的客戶似乎充滿了空值。
@ URL.Action呈現的html如下所示,看起來是一個好的開始,但只有一些客戶字段,而不是全部。 客戶是否過於復雜而無法以這種方式分解? 有沒有更好的方法呢?
<button onclick="window.location.href =
'/Test/Cust/BasketAddCustomer?BirthDate=01%2F01%2F0001%2000%3A00%3A00&PrimaryEmailFlag=False&PrimaryEmailDate=01%2F01%2F0001%2000%3A00%3A00&PrimaryEmailID=0&PrimaryPhoneFlag=False&PrimaryPhoneDate=01%2F01%2F0001%2000%3A00%3A00&PrimaryPhoneID=0&WifiConnected=False';" >Select customer</button>
根據我對@ url.action的了解,我們只能發送路由值而無法發送對象本身。
請參考此鏈接: https : //msdn.microsoft.com/en-us/library/system.web.mvc.urlhelper.action(v= vs.118).aspx
因此,對於您的問題,您可以將任何唯一值作為url.helper中的路由參數發送到控制器操作,並使用linq查詢操作從數據庫中獲取整個對象。
注意:如果您的要求說明了,您應該只發送對象,然后您可以將表單中的所有控件放在視圖中並以post方式發送。
希望以上信息是有幫助的。
謝謝
KARTHIK
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.