我的數據庫模型的字段名中帶有「_」列名。 當在表單中顯示時,有沒有辦法在駝峯案例中展示這些值?像 「BUSINESSNAME」MVC LabelFor用CamelCase替換下劃線
我使用asp.net MVC3剃刀
@Html.LabelFor(model => model.business_name)
我的數據庫模型的字段名中帶有「_」列名。 當在表單中顯示時,有沒有辦法在駝峯案例中展示這些值?像 「BUSINESSNAME」MVC LabelFor用CamelCase替換下劃線
我使用asp.net MVC3剃刀
@Html.LabelFor(model => model.business_name)
你能不能只使用DisplayAttribute?
爲什麼你不使用@ Html.Label(「商業名稱」)?
你需要一個新的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提供給定屬性名稱的正確顯示名稱
+1,這是正確的方法。添加到你的答案應該使用視圖模型,而不是一些EF自動生成的域實體進入視圖,你的答案將是完美的。而不是說*你不能只使用... *你應該說*你應該使用... *。 –
是的,我會說,「你應該」,但我想我回答了一個問題的形式,因爲我想分享這些信息,但也詢問它是否適合他的申請。我也完全同意使用視圖模型,這就是我所做的。我不喜歡用屬性來裝飾我的域實體,而是創建視圖模型並對其進行裝飾。感謝+1。 –
我首先使用帶有db的Edmx文件。我如何使用disaplyattribute –