2014-04-07 48 views
0

我正在構建一個MVC 4應用程序。我有一個名爲OrganisationId的字段,這是強制性的。如何爲LabelFor helper添加一個asterix?

@Html.LabelFor(m => m.OrganisationId) 

我需要在標籤之後放置一個星號是該字段是必需的。 如何訪問LabelFor模板?他們在哪裏儲存?我如何創建自己的?

感謝

+0

你需要在模型類上做這件事.. – Rahul

+0

Rahual - 請你多解釋一下還是給我一些樣品? – user2206329

回答

0

在模型中使用的數據註解

[Required] 
    [UIHint("RequiredTemplate")]//this does the trick which should match the file name. 
    [Display(Name="Organization Id")] 
    public string Name { get; set; } 

下降瀏覽一個新文件夾/共享/ DisplayTemplates 創建一個新的局部視圖RequiredTemplate.cshtml。

<font style="color:Red">*</font>@Html.LabelFor(m => m) 

您認爲其中的組織應使用DisplayFor

<div class="display-field"> 
    @Html.DisplayFor(m => m.Name) 
</div> 
0

我創建了一個HTML擴展:

public static MvcHtmlString LabelForX<TModel, TValue>(this HtmlHelper<TModel> html, Expression<Func<TModel, TValue>> expression, string requiredText = "required", string innerText = "*") 
{ 
    ModelMetadata metadata = ModelMetadata.FromLambdaExpression(expression, html.ViewData); 
    string htmlFieldName = ExpressionHelper.GetExpressionText(expression); 
    string labelText = metadata.DisplayName ?? metadata.PropertyName ?? htmlFieldName.Split('.').Last(); 
    if (String.IsNullOrEmpty(labelText)) 
    { 
     return MvcHtmlString.Empty; 
    } 

    var tag = new TagBuilder("label"); 
    tag.Attributes.Add("for", html.ViewContext.ViewData.TemplateInfo.GetFullHtmlFieldId(htmlFieldName)); 
    tag.SetInnerText(labelText); 

    if (metadata.IsRequired) 
    { 
     var span = new TagBuilder("abbr"); 
     span.Attributes.Add("title", requiredText); 
     span.Attributes.Add("class", "labelRequired"); 
     span.SetInnerText(innerText); 
     tag.Attributes.Add("class", "labelRequired"); 
     tag.InnerHtml = span.ToString(TagRenderMode.Normal) + "&nbsp;" + labelText; 
    } 
    return MvcHtmlString.Create(tag.ToString(TagRenderMode.Normal)); 
} 

然後這樣使用:

@Html.LabelForX(x => x.YourRequieredField) 

我改變了我所有的LabelFor爲我的新LabelForX ...因此,如果我的Model/ViewModel屬性有[必需],它將顯示一個「*」使用<abbr>標記。

我創建了一個應用於標籤和「*」的CSS類「labelRequired」,因此您可以設置與普通標籤不同的請求標籤。

相關問題