我需要在标签上加上星号。我为
创建了一个编辑器 @if (ModelMetadata.FromLambdaExpression(x => x, ViewData).IsRequired)
{
@Html.LabelFor(m => m, null, "*")
}
我认为这只是采用标签,然后附加星号,但它不起作用。
我做错了什么?我使用了错误的重载吗?
答案 0 :(得分:0)
是否需要成为Html助手?如果没有,你可以添加带星号的跨度。像这样。
@if (ModelMetadata.FromLambdaExpression(x => x, ViewData).IsRequired)
{
<span>*</span>
}
答案 1 :(得分:0)
是的,您正在将文字从Property Name
重载到Label Text
如果您要分配Label For
标签,textbox, checkbox, radio
将非常有用:
@Html.LabelFor(model => model.FirstName)
@Html.TextBoxFor(model => model.FirstName, new { @maxlength = 30, placeholder = "First Name (Required)" })
在浏览器端,Html将呈现如下:
<label for="FirstName">First Name</label>
<input id="FirstName" type="text" value="RJK" placeholder="First Name (Required)" name="FirstName" maxlength="30">
如果您将标签文本指定为*
,即使您拥有属性名称@Html.LabelFor(m => m, null, "*")
,标签文本也将覆盖如下:
<label for="m">*</label>
您可以使用:
而不是这样做@Html.Label(Model.BedNo + "*")
@Html.Label("*")
或强>
The Star可能在剃刀外面:
@Html.LabelFor(model => model.BedNo)*
请参阅此处:Link
答案 2 :(得分:0)
您应该使用DisplayNameAttribute修饰模型。
[DisplayName("First Name*")]
public string Name { get; set; }
查看 - 您无需附加任何内容。
@Html.LabelFor(m=> m.Name)
答案 3 :(得分:0)
您可以为此创建一个html帮助器。这是一个快速而又肮脏的例子:
public static class LabelHelpers
{
public static MvcHtmlString CustomLabelFor<TModel, TProperty>(
this HtmlHelper<TModel> htmlHelper,
Expression<Func<TModel, TProperty>> expression,
string labelText)
{
string labelHtml = string.Empty;
if (ModelMetadata.FromLambdaExpression(expression, htmlHelper.ViewData).IsRequired)
{
string spanHtml = "<span class='required'>*</span>";
labelHtml = "<label>" + labelText + spanHtml + "</label>";
}
else
{
labelHtml = "<label>" + labelText + "</label>";
}
return new MvcHtmlString(labelHtml);
}
}
在视图中使用,例如:
@Html.CustomLabelFor(m => m.FirstName, "First Name")
这样,所有逻辑都包含在辅助方法中,无需添加&#39;如果&#39;对视图的陈述或其他。如果需要,您可以从此处访问PropertyName
:
ModelMetadata.FromLambdaExpression(expression, htmlHelper.ViewData).PropertyName
答案 4 :(得分:0)
你可以这样做
@Html.LabelFor(model => model.Name, new { id = "label-Name" })<span style="Color:Red">*</span>