我有一个包含多个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>
答案 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>