asp.net-mvc – 如何使用Html.DropDownList为默认选项设置值

前端之家收集整理的这篇文章主要介绍了asp.net-mvc – 如何使用Html.DropDownList为默认选项设置值前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在使用ASP MVC RC1.

我正在使用的表单包含一个下拉列表,我已将此代码放在视图中.

<%= Html.DropDownList("areaid",(SelectList)ViewData["AreaId"],"Select Area Id")%>

但是,渲染时,这就是我得到的

<select id="areaid" name="areaid">
   <option value="">Select Area Id</option>
   <option value="1">Home</option>
   ...
</select>

我想要的是选择区域ID选项的值为0,默认情况下将其标记为已选中,因此它与其他值一致,我可以验证是否已选择某个区域,因为它是强制性的值. AreaId是一个整数,所以当我当前点击表单而根本没有触及下拉列表时,MVC抱怨“”不是整数并且给我一个绑定错误.

那么如何设置默认选项的值,然后在表单上选中它?

谢谢,丹

解决方法

我认为你有三个选择.首先,当您构建SelectList或可枚举SelectItemList时,请在选择前添加选项标签和默认值.如果在模型中尚未选择其他值,则将其置于顶部将使其成为默认值.其次,您可以使用循环创建选项,在视图中“手动”构建选择(和选项).同样,如果模型中未提供默认选择,则前置默认选择.第三,使用DropDownList扩展,但在加载页面后使用javascript修改第一个选项的值.

似乎不可能使用DropDownList扩展为optionLabel分配值,因为它被硬编码为使用string.Empty.以下是http://www.codeplex.com/aspnet的相关代码段.

// Make optionLabel the first item that gets rendered.
    if (optionLabel != null) {
        listItemBuilder.AppendLine(ListItemToOption(new SelectListItem() { Text = optionLabel,Value = String.Empty,Selected = false }));
    }

编辑:最后,最好的方法是让您的模型采用Nullable值并使用requiredAttribute将其标记为必需.我建议使用视图特定的模型而不是视图的实体模型.由于该值为Nullable,如果在没有选择值的情况下回发,则空字符串将正常工作.将其设置为必需值将导致模型验证失败,并显示需要该值的相应消息.这将允许您按原样使用DropdownList帮助程序.

public Areaviewmodel
{
    [required]
    public int? AreaId { get; set; }

    public IEnumerable<SelectListItem> Areas { get; set; }
    ...
}

@Html.DropDownListFor( model => model.AreaId,Model.Areas,"Select Area Id" )

猜你在找的asp.Net相关文章