当前位置:  开发笔记 > 编程语言 > 正文

如何使用Html.DropDownList为默认选项设置值

如何解决《如何使用Html.DropDownList为默认选项设置值》经验,为你挑选了1个好方法。

我正在使用ASP MVC RC1.

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

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

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

 

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

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

谢谢,丹



1> tvanfosson..:

我认为你有三个选择.首先,当您构建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 Areas { get; set; }
    ...
}

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

推荐阅读
手机用户2402851155
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有