MVC 4:如何使DropDownListFor作为optionLabel值返回0?

时间:2013-08-09 18:30:54

标签: c# asp.net-mvc razor

我有一个包含多个DropDownListFors的创建视图。每次创建一个新对象时,只有一个DropDownListFors应该有一个值,我希望其他人在选择了optionLabel时返回0作为结果。

如何将0指定为DropDownListFor的optionLabel?

的值

编辑: 以下是我视图中DropDownListFor代码的示例:

@Html.DropDownListFor(model => model.cardReward.ID, new SelectList(ViewBag.cardReward, "Id","Name"), "None")

当我渲染页面时,它会在顶部创建一个列为None的列表,如下所示:

<option value>None</option>

我希望它是这样的:

<option value="0">None</option>

2 个答案:

答案 0 :(得分:10)

documentation for DropDownFor optionLabel参数(您传递的内容为“无”)中描述为:

  

默认空项目的文字。

所以这个设计永远是一个空项目。您需要在选择列表中添加一个额外的项目才能获得0值。

我使用了以下扩展方法来完成此操作(抱歉未经测试,可能存在轻微错误):

public IEnumerable<SelectListItem> InsertEmptyFirst(this IEnumerable<SelectListItem> list, string emptyText = "", string emptyValue = "")
{
    return new [] { new SelectListItem { Text = emptyText, Value = emptyValue } }.Concat(list);
}

您可以这样使用它:

@Html.DropDownListFor(model => model.cardReward.ID, new SelectList(ViewBag.cardReward, "Id","Name").InsertEmptyFirst("None", "0"))

答案 1 :(得分:1)

插入一个新的空字符串,这是一个例子。

<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.5/js/bootstrap.min.js"></script>
<link href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.5/css/bootstrap.min.css" rel="stylesheet" />
<nav class="navbar navbar-inverse">
  <div class="container-fluid">
    <div class="navbar-header">
      <button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#bs-example-navbar-collapse-1" aria-expanded="false"> <span class="sr-only">Toggle navigation</span>
        <span class="icon-bar"></span>
        <span class="icon-bar"></span>
        <span class="icon-bar"></span>

      </button>
    </div>
    <div class="collapse navbar-collapse" id="bs-example-navbar-collapse-1">
      <ul class="nav navbar-nav">
        <li><a href="/Home/About">About Us</a>

        </li>
        <li class="dropdown"> <a href="/Product" class="dropdown-toggle" data-toggle="dropdown">Brands <b class="caret"></b></a>

          <ul class="dropdown-menu">
            <li> <a href="/Product/ProductList/5">brand1</a>

            </li>
            <li> <a href="/Product/ProductList/2">brand 2</a>

            </li>
            <li> <a href="/Product/ProductList/7">brand 3</a>

            </li>
          </ul>
        </li>
        <li><a href="/Distributor">Distributor</a>

        </li>
        <li><a href="/News">News</a>

        </li>
      </ul>
      <ul class="nav navbar-nav navbar-right">
        <li class="navitem-blue"> <a href="/Account/SignIn?returnUrl=%2FDistributor" id="linkLogin">Sign In</a>

        </li>
        <li class="navitem-blue"><a href="/Home/Contact">Contact Us</a>

        </li>
      </ul>
    </div>
  </div>
</nav>