@ Html.LabelFor helper没有为所需的textarea插入星号

时间:2014-06-04 03:35:56

标签: html asp.net-mvc razor

我正在开发一个ASP.Net MVC 5项目uisng razor views。

我使用html帮助程序在表单中有多个textarea字段。

所有东西似乎都运转不错但是textareas的标签不能显示" *"表示像其他字段一样的必填字段。有这个特殊原因吗?我如何做到这一点?

我的模型看起来像这样(仅显示相关信息):

    [Required, DisplayName("Agreed Action")]
    public string AgreedActionText { get; set; }

我的观点如下:

<div class="form-group">
  @Html.LabelFor(model => model.AgreedActionText, new { @class = "col-xs-12 col-sm-2  col-md-2 control-label" })
  <div class="col-xs-12 col-sm-10 col-md-10">
    @Html.TextAreaFor(model => model.AgreedActionText, new { @class = "form-control" })
    @Html.ValidationMessageFor(model => model.AgreedActionText)
  </div>
</div>    

工作示例:

型号:

[Required, DisplayName("Action Title")]        
public string ActionShort { get; set; }

查看:

<div class="form-group">
  @Html.LabelFor(m => m.ActionShort, new { @class = "col-xs-12 col-sm-4 col-md-4 control-label" })
  <div class="col-xs-12 col-sm-8 col-md-8">
    @Html.TextBoxFor(m => m.ActionShort, new { @class = "form-control" })
    @Html.ValidationMessageFor(m => m.ActionShort)
  </div>
</div>

这有效:

<label class="col-xs-12 col-sm-2 col-md-2 control-label" for="AgreedActionText">Agreed   Action Text<span style="color:red"> *</span></label>

但它并不是我所追求的解决方案,我希望帮助程序自动知道它是必填字段并像文本框和其他输入字段一样添加星号。

3 个答案:

答案 0 :(得分:1)

您可以为此创建自己的html助手。 这可能会有所帮助:

How can I override the @Html.LabelFor template?

Html inside label using Html helper

答案 1 :(得分:0)

<style type="text/css">
.requiredlabel :after 
{
    content: "*";
    font-weight: bold;
    color: red; 
}
</style>
  @Html.Label("Title", new { @id = "lbltitleName", @class = "control-label requiredlabel " })

答案 2 :(得分:-2)

我已经快速浏览了ASP.NET网站,并在验证教程中注意到以下代码片段:

[Required(ErrorMessage = "Price is required")]

所以在你的实例中:

[Required(ErrorMessage = "*"), DisplayName("Agreed Action")]

现在,我知道上述内容在用户尝试提交缺少内容的表单之前不会显示,但实现完全由MVC框架处理。

我希望这会让你更接近你所追求的目标。