【发布时间】:2010-03-09 16:17:55
【问题描述】:
我注意到在我看来是 asp.net MVC 中的一个错误,或者只是我做错了什么。我目前使用的是 1.0,所以也许这将在 2.0 版本中解决。但不管怎样,我们开始吧。
当我的视图模型具有与下拉列表声明的 id 同名的属性时,所选项目被忽略并且呈现的 html 没有任何选择。 不确定我是否做错了什么,但更改 id 的名称可以解决问题。我简化了例子,希望清楚,否则请告诉我。
这是我的视图,其中声明的 ID 与我在模型中的列表名称相同:
<table border="0" cellpadding="0" cellspacing="0">
<tr>
<td>
<%= Html.DropDownList("IsMultipleServicers", Model.IsMultipleServicers) %>
</td>
</tr>
</table>
以及渲染出来的Html
<table border="0" cellpadding="0" cellspacing="0">
<tr>
<td>
<select id="IsMultipleServicers" name="IsMultipleServicers">
<option value="false">No</option>
<option value="true">Yes</option>
</select>
</td>
</tr>
</table>
现在让我们做一个小改动。我会将声明的 id 更改为不同的东西。
这是我的观点:
<table border="0" cellpadding="0" cellspacing="0">
<tr>
<td>
<%= Html.DropDownList("MultipleServicers", Model.IsMultipleServicers) %>
</td>
</tr>
</table>
现在渲染的 html:
<table border="0" cellpadding="0" cellspacing="0">
<tr>
<td>
<select id="IsMultipleServicers" name="IsMultipleServicers">
<option value="false">No</option>
<option selected="selected" value="true">Yes</option>
</select>
</td>
</tr>
</table>
请注意,现在我得到了一个选定的选项,它将是列表中的第二个元素。
这是我的 ViewModel,只是为了将所有内容联系在一起:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
namespace MVCProject.Models.ViewModels.Service
{
public class ServiceViewModel : ViewModel
{
public List<SelectListItem> IsMultipleServicers { get; set; }
}
}
这是我的行动:
[AcceptVerbs(HttpVerbs.Get)]
public virtual ActionResult Service()
{
return View(new ServiceViewModel()
{
IsMultipleServicers = BuildBooleanSelectList(true)
};
}
private List<SelectListItem> BuildBooleanSelectList(bool isTrue)
{
List<SelectListItem> list = new List<SelectListItem>();
if (isTrue)
{
list.Add(new SelectListItem() { Selected = false, Text = "No", Value = "false" });
list.Add(new SelectListItem() { Selected = true, Text = "Yes", Value = "true" });
}
else
{
list.Add(new SelectListItem() { Selected = true, Text = "No", Value = "false" });
list.Add(new SelectListItem() { Selected = false, Text = "Yes", Value = "true" });
}
return list;
}
【问题讨论】:
标签: asp.net-mvc drop-down-menu