我正在構建一個MVC 4應用程序。我有一個名爲OrganisationId的字段,這是強制性的。如何爲LabelFor helper添加一個asterix?
@Html.LabelFor(m => m.OrganisationId)
我需要在標籤之後放置一個星號是該字段是必需的。 如何訪問LabelFor模板?他們在哪裏儲存?我如何創建自己的?
感謝
我正在構建一個MVC 4應用程序。我有一個名爲OrganisationId的字段,這是強制性的。如何爲LabelFor helper添加一個asterix?
@Html.LabelFor(m => m.OrganisationId)
我需要在標籤之後放置一個星號是該字段是必需的。 如何訪問LabelFor模板?他們在哪裏儲存?我如何創建自己的?
感謝
在模型中使用的數據註解
[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>
我創建了一個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) + " " + labelText;
}
return MvcHtmlString.Create(tag.ToString(TagRenderMode.Normal));
}
然後這樣使用:
@Html.LabelForX(x => x.YourRequieredField)
我改變了我所有的LabelFor
爲我的新LabelForX
...因此,如果我的Model/ViewModel屬性有[必需],它將顯示一個「*」使用<abbr>
標記。
我創建了一個應用於標籤和「*」的CSS類「labelRequired」,因此您可以設置與普通標籤不同的請求標籤。
你需要在模型類上做這件事.. – Rahul
Rahual - 請你多解釋一下還是給我一些樣品? – user2206329