c# - 使用 MVC 2 中手动定义的 SelectListItems 中的 SelectList 呈现问题

标签 c# model-view-controller asp.net-mvc-2 selectlist

我正在使用 ASP.NET MVC 2 (.NET 3.5),需要手动定义选项列表。当我这样做时,我会得到一个下拉菜单,其中每个手动条目都显示为“System.Web.Mvc.SelectListItem”。

我的 View 模型这样定义列表:

    public SelectList YesNoList
    {
      get
      {
        List<SelectListItem> tmpList = new List<SelectListItem>();
        tmpList.Add(new SelectListItem {Text = "", Value = ""});
        tmpList.Add(new SelectListItem {Text = "Yes", Value = "1"});
        tmpList.Add(new SelectListItem {Text = "No", Value = "0"});
        YesNoList = new SelectList(tmpList,"");
      }
      private set{}
     }

在 View 中,我使用 Html.DropDownList 引用它:

Html.DropDownList("FieldName", viewmodel.YesNoList);

我期望在最终网页上呈现的内容应该是这样的:

<select id="FieldName" name="FieldName">
  <option value=""/>
  <option value="1">Yes</option>
  <option value="0">No</option>
</select>

相反,我得到:

<select id="FieldName" name="FieldName">
  <option>System.Web.Mvc.SelectListItem</option>
  <option>System.Web.Mvc.SelectListItem</option>
  <option>System.Web.Mvc.SelectListItem</option>
</select>

我很茫然,因为我无法弄清楚为什么要返回类型,所以如果有人能向我指出 View 模型定义有什么问题,或者指出更好的方法,我将不胜感激。我对从 C# 类的集合派生 SelectList 犹豫不决,因为 SelectList 会提供一种一致的方法来遍历值和显示文本。

在此先感谢,希望有人能提供帮助。

干杯,

J

最佳答案

下拉列表可以处理 List<SelectListItem>同样,只需发送它即可。

Html.DropDownList("FieldName", viewmodel.YesNoList);

public List<SelectListItem> YesNoList
{
  get
  {
    List<SelectListItem> YesNoList = new List<SelectListItem>();
    YesNoList.Add(new SelectListItem {Text = "", Value = ""});
    YesNoList.Add(new SelectListItem {Text = "Yes", Value = "1"});
    YesNoList.Add(new SelectListItem {Text = "No", Value = "0"});
    return YesNoList;
  }
  private set{}
 }

您实际上在制作选择列表时做错了。

应该是:

new SelectList(tmpList, "Value", "Text"); 

然后忘记我上面的代码。你可以用任何列表来做到这一点,如果你给它列表和值和文本“key”

关于c# - 使用 MVC 2 中手动定义的 SelectListItems 中的 SelectList 呈现问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3736901/

相关文章:

asp.net-mvc-2 - 负载测试网站。需要什么?

python - 导入模型/库类并从 Controller 调用

c# - 为什么 outlook 嗅探器不处理我的日历邀请?

c# - 订购一个 ObservableCollection<T> 而不创建一个新的

c# - DataGridView 使用 DataSourceNullValue : enter either nothing, 或 nullValue

javascript - MVC 枚举列表使用 Angular JS 在下拉列表中绑定(bind)

java - 我可以在java MVC模型中使用getter和setter吗

c# - 如何从 Request.Form 获取所有元素值而不用 .GetValues ("ElementIdName"准确指定哪个元素值)

asp.net - 将 int 数组发布到 MVC Controller - 正确的方法签名是什么?

c# - 获取首先实现接口(interface)但没有派生类的所有 c# 类型