将星号附加到标签上

时间:2014-04-14 05:13:37

标签: asp.net-mvc asp.net-mvc-3 asp.net-mvc-4

我需要在标签上加上星号。我为

创建了一个编辑器
 @if (ModelMetadata.FromLambdaExpression(x => x, ViewData).IsRequired)
  {
       @Html.LabelFor(m => m, null, "*")
  }

我认为这只是采用标签,然后附加星号,但它不起作用。

我做错了什么?我使用了错误的重载吗?

5 个答案:

答案 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>