带有列表验证的ASP.NET MVC3模型

时间:2012-09-27 10:31:33

标签: asp.net-mvc-3 validation model

给定模型:

    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}
                         };
        }
    }

控制器:

    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);
    }

观看:

    <!-- 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>
    }

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

1 个答案:

答案 0 :(得分:0)

如果你制作一个名为'Week'的模型或类似的东西:

public Week(){
public int Id;
public int AccountId;
public bool Monday;
public bool ...;
public bool Friday;
}

并在Registermodel中添加对此的引用。

希望这有帮助!

相关问题