Im遵循概述here执行此操作。MVC和XVal下拉 - 价值'请选择'是无效的
我在验证xval下拉选择时遇到了问题,MVC绑定似乎推断允许操作通过验证的错误事件,但modelstate存储绑定异常并使页面无效 - 所以我得到允许使用无效数据执行操作的情况,但页面无效,因此用户会导致认为验证失败。
这可能使其更清晰
这是我的下拉,假设用户没有做任何使“请选择”被选中。
Do you like cheese:
<select name="Favourites.Cheese">
<option>Please Select</option>
<option value="1">Yes</option>
<option value="0">No</option>
</select>
<%=Html.ValidationMessage("Favourites.Cheese")%>
这是控制器的动作从帖子太,MVC映射值false到fav.cheese,
public ActionResult Create(Favourites fav)
{
try
{
_favTask.Create(fav);
}
catch (RulesException ex)
{
ex.AddModelStateErrors(ModelState, "Favourites");
}
if(!ModelState.IsValid)
{
//redirect back
}
//other stuff
}
该物业已被归因
pulic class Favourites
{
[Required]
public bool Cheese{get;set;}
}
不允许有例外扔因为fav.cheese有一个值
public int Create(Favourites fav)
{
var errors = DataAnnotationsValidationRunner.GetErrors(fav);
if (errors.Any())
throw new RulesException(errors);
//create fav
}
但是,当焦点返回到控制器时,ModelState.Isvalid作为false出现,因此from重新载入消息'请选择'值无效。如何阻止这种情况发生,以及如何使用xVal驱动的“请选择一个值”的验证方法?
Mvc会将其映射到false否?因此它会出现一些被选中的东西? – Dan 2009-04-29 07:21:36
我误解了你的问题吗?你说现在他们得到一个验证错误“值”请选择“无效”,你想停止错误?你想要发生什么? – tvanfosson 2009-04-29 12:09:05