1

为了保持简单,我有一个模型,它只有一个必需属性(仅在名称上)。我的视图只有一个@Html.ValidationMessageFor与名称相关联的视图。当我在未填写任何内容时单击视图上的保存时,所有字段都按要求返回。如果我填写名称字段,其余字段将按要求返回。我真的需要一些帮助来弄清楚为什么会这样:

public class KeyActive
{
    [Key]
    public int Pk { get; set; }

    [Required(ErrorMessage="Name of filler is required.")]
    [Display(Name="Name:")]
    public string Name { get; set; }

    [Display(Name = "Capsule 00 Pack Stat:")]
    public int PackStat00 { get; set; }

    [Display(Name = "Capsule 0 Pack Stat:")]
    public int PackStat0 { get; set; }

    [Display(Name = "Capsule 1 Pack Stat:")]
    public int PackStat1 { get; set; }

    [Display(Name = "Capsule 3 Pack Stat:")]
    public int PackStat3 { get; set; }

    public string CreatedBy { get; set; }
    public DateTime CreatedDate { get; set; }
    public string ModifiedBy { get; set; }
    public DateTime ModifiedDate { get; set; }
}

这是我的观点:

<div data-role="fieldcontain">
    @Html.LabelFor(model => model.Name)
    @Html.EditorFor(model => model.Name)
    @Html.ValidationMessageFor(model => model.Name)
</div>

<div data-role="fieldcontain">
    @Html.LabelFor(model => model.PackStat00)
    @Html.EditorFor(model => model.PackStat00)
</div>

<div data-role="fieldcontain">
    @Html.LabelFor(model => model.PackStat0)
    @Html.EditorFor(model => model.PackStat0)
</div>

<div data-role="fieldcontain">
    @Html.LabelFor(model => model.PackStat1)
    @Html.EditorFor(model => model.PackStat1)
</div>

<div data-role="fieldcontain">
    @Html.LabelFor(model => model.PackStat3)
    @Html.EditorFor(model => model.PackStat3)
</div>

最后,当我填写表格并单击保存时,我得到了以下信息:

在此处输入图像描述

它的行为就像每个字段都是必需的 - 当我填写名称并将其他所有内容留空时,它不会让我提交它,因为它似乎认为其他字段也是必需的。我真的需要一些帮助,以确定是否有另一个我没有看到执行验证的地方,或者我在这里做错了什么!谢谢。

4

1 回答 1

2

可能是因为您的 ViewModel 使用的是 int 而不是可为空的值:

public Nullable<int> PackStat00

或者

public int? PackStat00

现在,没有办法在视图模型中为这些字段存储空值。

于 2013-04-01T14:55:02.877 回答