【发布时间】:2014-03-04 21:23:51
【问题描述】:
我在 ASP.NET MVC cshtml 页面中有以下 DropDownList:
@Html.DropDownListFor(model => model.GroupId, (IEnumerable<SelectListItem>)ViewBag.PossibleGroups, "")
属性定义为public virtual Nullable<int> GroupId
虽然GroupId 是Nullable,但select 菜单不会接受空选项。如果我尝试在不选择组的情况下保存模型,则会收到以下错误消息:
GroupId字段必须是数字。
选择菜单呈现如下:
<select data-val="true" data-val-number="The field GroupId must be a number." id="GroupId" name="GroupId" class="input-validation-error" data-hasqtip="0" aria-describedby="qtip-0">
<option value=""></option>
<option value="1">Test Group</option>
</select>
不,GroupId 没有用 [Required] 属性修饰。
如何使页面接受GroupId 的空值?
附: GroupId 类型 (Nullable<int>) 是代码生成的。我使用数据库优先方案。我不知道<Nullable>int 和int 有什么区别?
更新:
即使空选择项的值为零也不会通过非干扰 (JavaScript) 验证。但是,设置 -1 的值会通过客户端和服务器端的验证。所以现在,我正在使用这个值,在控制器中,如果它等于-1,我将GroupId 设置为null。
我不敢相信这样一个简单的问题没有更简单的解决方案。这是 ASP.NET MVC 3 中的错误吗?
【问题讨论】:
-
GroupId 是否被其他属性修饰过?
标签: c# asp.net-mvc-3 validation drop-down-menu nullable