2012-07-19 65 views
0

使用MVC,當您使用類似@ Html.TextBoxFor(...)的東西時,控件呈現使用模型中的屬性屬性進行驗證等事情。Asp.net MVC模型屬性元數據指定文本框ID

它也使用該類的屬性名稱作爲呈現的HTML控件的名稱。這與我們的命名約定有一點衝突,所以我希望能夠更多地控制ID。

我已經添加了「htmlAttributes:」給助手,這我想要做什麼,但我想知道:

  1. 這將如何影響MVC的再次實例化模型 能力當信息貼?
  2. 有沒有一種方法可以在模型類中使用屬​​性屬性指定控件ID?

感謝, 雅克

回答

2

這將如何影響MVC的再次實例化模型的能力,當信息發佈?

ID屬性絕對不會影響發佈的任何內容。提交表單時從不使用ID屬性。唯一的要求是該屬性在整個DOM中都是唯一的。它是由模型聯編程序使用的屬性。您無法使用htmlAttributes更改此屬性,因爲此屬性是從用作第一個參數的lambda表達式中推斷出來的,您不需要更改它,否則您可能會打破默認模型綁定器重新水化視圖模型的方式。

有沒有一種方法來指定使用模型類中的屬性控件ID?

是的,但它可能會多一點工作。您可以將自定義編輯器模板用於標準類型和自定義元數據識別屬性,該屬性會將此附加元數據信息傳遞給自定義編輯器模板。如果你對實現細節感興趣,我可以提供一個例子,但首先我必須明白爲什麼你需要這個。

+0

感謝Darin,主要問題是我們對服務器端控件/屬性/等與客戶端JavaScript有非常特定的命名約定。例如,如果它是服務器端的屬性或對象,它將被命名爲MyObject,但是客戶端則是myObject。這顯然不是一個足夠的理由來做一堆額外的工作,只是想知道是否有一個簡單的方法來做到這一點。 – Jacques 2012-07-19 07:38:11

+0

實際上,在這種情況下,使用htmlAttributes將適用於我的目的,因爲它不影響模型綁定器! – Jacques 2012-07-19 07:39:24

+0

是的,你可以使用**'id' **屬性的任何約定。它根本不會影響模型綁定。 – 2012-07-19 07:40:34