我有一个非常简单的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的东西,我需要设置或更改以确保在没有我要求的情况下不会发生这种情况?
答案 0 :(得分:0)
默认情况下需要decimal
之类的类型,因为它们不可为空。如果你真的希望它是可选的,你需要使属性成为可以为零的十进制(decimal?
)。