2010-03-31 77 views
0

鑑於以下MVC加價:殘疾人專用<label>在MVC

<p> 
     <label for="forenamesLabel">Forename(s):</label> 
     <%: Html.TextBoxFor(model => model.ConsultantRegistrationDTO.Forenames) %> 
     <%: Html.ValidationMessageFor(model => model.ConsultantRegistrationDTO.Forenames, "*") %> 
    </p> 

怎麼可能對我來說,準確地設置標籤/ @爲屬性通過MVC生成的文本框的ID?如果我使用@id作爲HTML選項,那不會破壞我的綁定嗎?

回答

1

您可以使用

Html.LabelFor(c model => model.ConsultantRegistrationDTO.Forenames) 

然後在你的模型,你需要從System.ComponentModel.DataAnnotations指定DisplayNameAttribute。所以,你的模型將是這個樣子:

public class ConsultantModel 
{ 
    [DisplayName("Forenames")] 
    public string Forenames { get; set; } 
} 
+0

謝謝,已經得到它。唯一的問題是,我的模型是WCF生成的類,因此無法添加屬性。我錯誤地將我的模型用作WCF DataContract類還是有其他方法? (對不起,MVC新手) – 2010-03-31 15:51:30

1

正如由Keltex建議您可以使用Html.LabelFor與顯示名稱裝飾。與此相關的一些考慮因素。

LabelFor和DisplayName裝飾器特定於MVC 2.這可能是也可能不是您的選項。

使用此方法,特別是使用DisplayName裝飾器,將視圖關注引入到您的模型中,這有時是不可取的。創建ViewModel並使用裝飾器來保持關注點分離通常會更好。

這也允許您在模型自動生成時使用DisplayNameAttribute,正如您所說的那樣。

+0

MVC 2很好。項目於4月12日後到期,因此應該沒問題。 非常感謝。我會看看你說的。你在關注問題上是正確的。我實際上已經在使用一個ViewModel,它有一個屬性,它是我WCF的DTO對象。我會和你的建議一起玩,並與好友上課一起玩。 http://davidhayden.com/blog/dave/archive/2009/08/10/AspNetMvc20BuddyClassesMetadataType.aspx – 2010-03-31 16:03:23