如何使用Razor创建一个显示选择的单个选择列表框

时间:2011-03-25 22:30:49

标签: asp.net-mvc asp.net-mvc-3 listbox razor

如何使用Razor视图引擎创建简单的单选列表框?我目前遇到两个问题。第一个是生成的列表框“选择”代码自动添加了“多个”。问题一是如何关闭它。不,我不想使用下拉列表框。

问题二比较棘手。尽管所讨论的项目具有选定的值,但输出html中生成的“选择”不会显示任何项目被选中。这是我的代码:

对象模型:

public class Description
{
    public String code { get; set; }
    public SelectList codelist;
}

控制器:

code = "drain";
codelist = new SelectList(sourcelist, "Key", "Value", "drain");

查看:

@Html.ListBoxFor(model => model.code, Model.codelist)

输出HTML:

<select data-val="true" data-val-required="The Select the permit type to apply for field is required." id="code" multiple="multiple" name="code"><option value="drain">Interior Drain Repair</option>
... yadda yadda yadda
</select>

你可以在这里看到我的两个问题。首先,选择列表中添加了“多个”,并且未选择所选选项“drain”。

有什么建议吗?我正好只是扔掉Razor并手工编写这些东西。

3 个答案:

答案 0 :(得分:2)

要创建单个选择列表框,您可以使用DropDownListFor但设置大小属性...所以这样做:

@Html.DropDownListFor(model => model.code,
         Model.codelist, 
         new Dictionary< string, object >() { { "size", "3"} })

答案 1 :(得分:1)

用户Html.DropDownList而不是Html.ListBox来创建一个选择框。

答案 2 :(得分:0)

好吧,我得到了问题一的答案 - 结果是浏览器将渲染从简单列表更改为下拉列表,如果“多个”被删除,那么我将不得不创造性地解决那一个。

问题二仍然存在 - 为什么Razor在渲染过程中不保留我选择的值?