MVC3可选模型属性

时间:2011-09-22 14:43:16

标签: c# asp.net asp.net-mvc asp.net-mvc-3

我有一个下拉列表,我希望它是可选的,但是,ModelState.IsValid检查试图验证该属性。有没有办法告诉它该属性是可选的?

这是我的代码:

<h2>New Version</h2>

@using (Html.BeginForm()) {
    <div>Version Number: @Html.TextBoxFor(m => m.Number)</div>
    <div>Enabled: @Html.CheckBoxFor(m => m.IsActive)</div>

    <div></div>

    <div>
        Template (optional): 
        @Html.DropDownListFor(m => m.TemplateVersionId, new SelectList(Model.CurrentVersions, "VersionId", "Number"),
            "-- Select Template --")
    </div>

    <input type="submit" value="Save" />
    @Html.ActionLink("Cancel", "Index");
}

和我的ViewModel:

public class AddVersionViewModel
{
    public double Number { get; set; }
    public bool IsActive { get; set; }

    public int TemplateVersionId { get; set; }
    public ICollection<Version> CurrentVersions { get; set; }
}

我希望TemplateVersionId是可选的。

2 个答案:

答案 0 :(得分:12)

将其更改为int?以使其可以为空。

答案 1 :(得分:1)

当您创建Nullable项目时,它在表单

中变为可选项
public class AddVersionViewModel
{
    public double Number { get; set; }
    public bool IsActive { get; set; }

    public int? TemplateVersionId { get; set; }
    public ICollection<Version> CurrentVersions { get; set; }
}