编辑器用于在不应该使用data-val-required和其他不显眼的属性时获取

时间:2014-12-10 19:07:24

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

我有一个非常简单的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的东西,我需要设置或更改以确保在没有我要求的情况下不会发生这种情况?

1 个答案:

答案 0 :(得分:0)

默认情况下需要decimal之类的类型,因为它们不可为空。如果你真的希望它是可选的,你需要使属性成为可以为零的十进制(decimal?)。