【问题标题】:EditorFor getting data-val-required and other unobtrusive attributes when it shouldn't编辑器用于在不应该获取 data-val-required 和其他不显眼的属性时
【发布时间】:2014-12-10 19:07:23
【问题描述】:

我有一个非常简单的 EditorTemplate 用于货币字段,如下所示:

@model Decimal?

<div class="input-group">
    <span class="input-group-addon fa fa-usd"></span>
    @Html.TextBox("", Model.ToString("N2"), new Dictionary<string, object>
    {
        {"class", "form-control"},
        {"data-type", "Currency"}
    })
</div>

不知何故,当使用 EditorFor 调用此模板时,它获得了必需和数字类型的不显眼属性,而我实际上没有在任何地方指定模型中的必需属性:

public class SampleViewModel
{
    [DisplayName("Amount Raised")]
    public decimal AmountRaised { get; set; }
}

.cshtml

@Html.EditorFor(model => model.AmountRaised)

HTML 结果:

<input class="form-control
    data-type="Currency"
    data-val="true"
    data-val-number="The field Amount Raised must be a number."
    data-val-required="The Amount Raised field is required."
    id="AmountRaised"
    name="AmountRaised"
    type="text"
    value=""
    aria-required="true"
    aria-describedby="AmountRaised-error">

将不应该的字段标记为必填项显然是为了防止表单提交在它们应该是有效表单时发生。

我是否需要设置或更改关于 EditorTemplates 的某些内容,以确保在没有我要求的情况下不会发生这种情况?

【问题讨论】:

    标签: jquery unobtrusive-validation mvc-editor-templates asp.net-mvc-viewmodel


    【解决方案1】:

    decimal 之类的类型默认是必需的,因为它们不可为空。如果您真的希望它是可选的,则需要将该属性设为可为空的小数 (decimal?)。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-05-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多