我有一個ASP.NET MVC3 Razor視圖,它爲jQuery UI手風琴內的客戶列表呈現編輯器。此刻,所有客戶端ID對於相似客戶屬性在呈現的HTML中都是相同的。出於顯而易見的原因,我想改變這一點。當在項目列表上重複生成時,在ASP.NET MVC3中生成不同的客戶端ID
我的主要觀點如下:
<div id="accordionKlanten">
@foreach (var customer in Model.Customers)
{
<h3><a href="#">@customer.Name</a></h3>
<div>@{ Html.RenderPartial("CustomerData", customer); }</div>
}
</div>
在我CustomerData
視圖(大大簡化):
@using (Ajax.BeginForm("UpdateCustomer", ajaxOptions))
{
@Html.LabelFor(model => model.Name)
@Html.TextBoxFor(model => model.Name)
<input type="submit" value="Opslaan" />
}
這一切都完美的作品:我可以張貼到我UpdateCustomer
操作方法中,模型對象被綁定,返回的部分視圖返回給客戶端。
但是,當我有三個客戶,這將呈現在我的HTML與id="Name"
三個輸入字段。其中一個出錯的是<label for="Name">...</label>
不起作用,因爲Name
不是唯一的ID。
有什麼辦法告訴告訴ASP.NET MVC3呈現不同的id
的(同時保留name
屬性完好無損,因爲它們用於綁定到模型)?
爲了完整起見,這裏所涉及的兩個操作方法:
// Returns view that renders editor for each customer.
public ActionResult Index()
{
var customers = _customerService.GetCustomers();
return View(new CustomersViewModel { Customers = customers });
}
// Updates a customer and returns a partial view.
[AcceptVerbs(HttpVerbs.Post)]
public ActionResult UpdateCustomer(CustomerDto customer)
{
// Update customer in database.
return PartialView("CustomerData", customer);
}
不,不要在視圖中使用任何循環。 – 2011-04-14 13:17:21
爲什麼不呢?自從mvc2以來我就這樣做了。 – 2011-04-14 13:18:56
因爲自ASP.NET 2.0以來有編輯器/顯示模板。查看我的答案瞭解更多詳情。所以循環只在ASP.NET MVC 1.0中需要。從那時起,視圖可以更清潔。 – 2011-04-14 13:19:58