gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-02 04:37:29 24 4
gpt4 key购买 nike

我正在使用 ASP MVC RC1。

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

<%= 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 会提示“”不是整数并给我一个绑定(bind)错误。

那么如何为默认选项设置一个值,然后在表单上选择它?

谢谢,丹

最佳答案

我认为你有 三个 四个选项。首先,当您构建 SelectList 或 SelectItemList 的枚举时,请在选择内容前面添加选项标签和默认值。如果模型中尚未选择其他值,则将其放在顶部将使其成为默认值。其次,您可以使用循环在 View 中“手动”构建选择(和选项)来创建选项。同样,如果模型中未提供默认选择,则在前面添加默认选择。第三,使用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 将其标记为必需。我建议使用特定于 View 的模型而不是 View 的实体模型。由于该值是可为空的,因此如果回发而不选择值,空字符串将正常工作。将其设置为必需值将导致模型验证失败,并显示一条表明需要该值的适当消息。这将允许您按原样使用 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-mvc - 如何使用 Html.DropDownList 设置默认选项的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/581805/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com