Asp.net mvc 3 带有列表验证的ASP.NET MVC3模型

Asp.net mvc 3 带有列表验证的ASP.NET MVC3模型,asp.net-mvc-3,validation,model,Asp.net Mvc 3,Validation,Model,给定模型: public class RegisterModel { <!-- some properties --> [Required] public Dictionary<DayOfWeek, bool> DaysAtWork { get; set; } public RegisterModel() { DaysAtWork = new Di

给定模型:

    public class RegisterModel
    {
        <!-- some properties -->

        [Required]
        public Dictionary<DayOfWeek, bool> DaysAtWork { get; set; } 

        public RegisterModel()
        {
            DaysAtWork = new Dictionary<DayOfWeek, bool>
                         {
                             {DayOfWeek.Monday, true},
                             {DayOfWeek.Tuesday, true},
                             {DayOfWeek.Wednesday, true},
                             {DayOfWeek.Thursday, true},
                             {DayOfWeek.Friday, true}
                         };
        }
    }
公共类注册表模型
{
[必需]
公共字典DaysAtWork{get;set;}
公共注册表模型()
{
DaysAtWork=新字典
{
{星期一,星期一,没错},
{星期二,没错},
{星期三,没错},
{星期四,没错},
{星期五,星期五,真的}
};
}
}
控制器:

    public ActionResult Register()
    {
        var model = new RegisterModel();

        return View(model);
    }

    [HttpPost]
    public ActionResult Register(RegisterModel model)
    {
    <!-- and at these point in model state property for DaysAtWork 
    Dictionary is null and the whole model is invalid - and property in model 
    parameter is also null -->
        if (ModelState.IsValid)
        {
            <!-- some logic here -->    
        }    
        return View(model);
    }
public ActionResult寄存器()
{
var模型=新的RegisterModel();
返回视图(模型);
}
[HttpPost]
公共操作结果寄存器(RegisterModel模型)
{
if(ModelState.IsValid)
{
}    
返回视图(模型);
}
和视图:

    <!-- some code -->
    @using (Html.BeginForm()) {
    @Html.ValidationSummary(true, "Account creation was unsuccessful. Please correct the errors and try again.")
    <div>
        <fieldset>
            <legend>Account Information</legend> 

            <div>Days at work</div>

            <div>
                Monday @Html.CheckBoxFor(m => m.DaysAtWork[DayOfWeek.Monday])
            </div>
            <div>
                Tuesday @Html.CheckBoxFor(m => m.DaysAtWork[DayOfWeek.Tuesday])
            </div>
            <div>
                Wednesday @Html.CheckBoxFor(m => m.DaysAtWork[DayOfWeek.Wednesday])
            </div>
            <div>
                Thursday @Html.CheckBoxFor(m => m.DaysAtWork[DayOfWeek.Thursday])
            </div>
            <div>
                Friday @Html.CheckBoxFor(m => m.DaysAtWork[DayOfWeek.Friday])
            </div>


            <p>
                <input type="submit" value="Register" />
            </p>
        </fieldset>
    </div>
    }

@使用(Html.BeginForm()){
@Html.ValidationSummary(true,“帐户创建未成功。请更正错误并重试。”)
帐户信息
工作日
Monday@Html.CheckBoxFor(m=>m.DaysAtWork[DayOfWeek.Monday])
星期二@Html.CheckBoxFor(m=>m.DaysAtWork[DayOfWeek.星期二])
星期三@Html.CheckBoxFor(m=>m.DaysAtWork[DayOfWeek.星期三])
星期四@Html.CheckBoxFor(m=>m.DaysAtWork[DayOfWeek.星期四])
Friday@Html.CheckBoxFor(m=>m.DaysAtWork[DayOfWeek.Friday])

}
我在尝试注册用户时遇到问题,因为在模型中DaysAtWork属性设置为null。如何告诉asp使用在Register()HttpGet方法中创建的模型?
我做错了什么?

如果您制作了一个名为“Week”或类似的模型:

public Week(){
public int Id;
public int AccountId;
public bool Monday;
public bool ...;
public bool Friday;
}
并在Registermodel中添加对此的引用


希望这有帮助

Nevaran在构造函数中初始化字典意味着在模型构造函数中为字典分配内存。