可能给Html.DropDownListFor()选项标签一个值?

问题描述:

我有这个可能给Html.DropDownListFor()选项标签一个值?

@Html.DropDownListFor(x => x.Names, new SelectList(Model.Names, "Value", "Text"), "---Filter By Name---", new { @class = "nameSelecter" }) 

当这种渲染“---过滤方式名称---”将是首选。我想知道可以为此设置一个值吗?

<option value="">---Filter By Name---</option> 

现在它没有价值。我想给一个。

+0

是否有一个理由,你需要给它一个价值?也许有另一种方法来实现这一点。 – 2011-04-09 22:35:02

DropDownListFor不支持此操作。您需要编写一个自定义帮助程序或使用javascript来完成。这就是说,为默认选择设置一个值是没有意义的,因为它也会打破所需属性的验证逻辑。

我能想到一个能够做到这一点的理由。我现在正在面对它。但是,一如既往,可能有另一种方式。我不希望选择是必需的,因为产生的“空值”(或0)值具有特殊意义,不与其他值相冲突,并且可以通过打算用于这样一个特殊的,但是人为地引起的情况而采取行动。

我正在使用EF,我有一个/或通过哪个有效的下拉选择为复杂模型中的相关实体生成密钥。当输入零值时,期望的是相关的实体绑定控件被渲染并且因此被验证。当输入非零值时,它代表一个键值,因此相关的实体控件不会被渲染,并且足以让父实体构成现有的键值...不需要创建新子代所需的实际绑定值实体。