【问题标题】:asp.net mvc3, why dataannotation validates without Validator Attributes?asp.net mvc3,为什么没有验证属性的数据注释验证?
【发布时间】:2012-05-09 16:57:56
【问题描述】:

我有一个简单的 ViewModel

public class ProductViewModel
{
    [Required(ErrorMessage = "This title field is required")]
    public string Title { get; set; }
    public double Price { get; set; }
}

这是我基于此视图模型的表单。

@using (Html.BeginForm()) {
@Html.ValidationSummary(true)
<fieldset>
    <legend>ProductViewModel</legend>

    <div class="editor-label">
        @Html.LabelFor(model => model.Title)
    </div>
    <div class="editor-field">
        @Html.EditorFor(model => model.Title)
        @Html.ValidationMessageFor(model => model.Title)
    </div>

    <div class="editor-label">
        @Html.LabelFor(model => model.Price)
    </div>
    <div class="editor-field">
        @Html.EditorFor(model => model.Price)
        @Html.ValidationMessageFor(model => model.Price)
    </div>

    <p>
        <input type="submit" value="Create" />
    </p>
</fieldset>

}

我不想验证价格字段。但它会自动验证,如果没有输入,将显示此字段是必需的。我注意到我使用双倍价格。如果我将其更改为“字符串”。验证被删除。为什么键入“double”会导致自动验证?

【问题讨论】:

    标签: asp.net-mvc-3 data-annotations


    【解决方案1】:

    我不想验证价格字段。但它会自动验证,如果没有输入,将显示此字段为必填项

    因为 double 是值类型,不能为 null。如果您希望该值允许没有值,请在您的模型上使用 nullable double: double?

    public class ProductViewModel
    {
        [Required(ErrorMessage = "This title field is required")]
        public string Title { get; set; }
        public double? Price { get; set; }
    }
    

    【讨论】:

      【解决方案2】:

      因为double是值类型,不能为null。你可以做到double?Nullable&lt;double&gt; 就可以了。

      【讨论】:

        猜你喜欢
        • 2012-04-13
        • 2011-08-08
        • 1970-01-01
        • 1970-01-01
        • 2017-12-13
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多