2011-07-09 58 views
4

我的數據庫模型的字段名中帶有「_」列名。 當在表單中顯示時,有沒有辦法在駝峯案例中展示這些值?像 「BUSINESSNAME」MVC LabelFor用CamelCase替換下劃線

我使用asp.net MVC3剃刀

@Html.LabelFor(model => model.business_name) 

回答

5

你能不能只使用DisplayAttribute

+2

+1,這是正確的方法。添加到你的答案應該使用視圖模型,而不是一些EF自動生成的域實體進入視圖,你的答案將是完美的。而不是說*你不能只使用... *你應該說*你應該使用... *。 –

+0

是的,我會說,「你應該」,但我想我回答了一個問題的形式,因爲我想分享這些信息,但也詢問它是否適合他的申請。我也完全同意使用視圖模型,這就是我所做的。我不喜歡用屬性來裝飾我的域實體,而是創建視圖模型並對其進行裝飾。感謝+1。 –

+1

我首先使用帶有db的Edmx文件。我如何使用disaplyattribute –

1

爲什麼你不使用@ Html.Label(「商業名稱」)?

5

你需要一個新的metadataprovider可以從默認的一個這樣的繼承:

using System; 
using System.Web.Mvc; 
using System.Collections.Generic; 

public class MyMetadataProvider : DataAnnotationsModelMetadataProvider 
{ 
    protected override ModelMetadata CreateMetadata(IEnumerable<Attribute> attributes, Type containerType, Func<object> modelAccessor, Type modelType, string propertyName) 
    { 
     var metadata = base.CreateMetadata(attributes, containerType, modelAccessor, modelType, propertyName); 

     if (metadata.DisplayName == null) 
      metadata.DisplayName = GetDisplayNameFromDBName(propertyName); 

     return metadata; 
    } 

    private string GetDisplayNameFromDBName(string propertyName) 
    { 
     return ...; 
    } 
} 

註冊它在Global.asax中是這樣的:

ModelMetadataProviders.Current = new MyMetadataProvider(); 

你只需要提供執行GetDisplayNameFromDBName提供給定屬性名稱的正確顯示名稱