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在构造函数中初始化字典意味着在模型构造函数中为字典分配内存。