【问题标题】:How to create a single select list box that shows the selection using Razor如何使用 Razor 创建显示选择的单个选择列表框
【发布时间】:2011-03-25 22:30:49
【问题描述】:

如何使用 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>

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

有什么建议吗?我正要扔掉 Razor 并手动编码这些东西。

【问题讨论】:

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


    【解决方案1】:

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

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

    【讨论】:

      【解决方案2】:

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

      【讨论】:

        【解决方案3】:

        好吧,我对第一个问题有了一些答案 - 如果删除“多个”,那么是浏览器将渲染从简单列表更改为下拉列表,所以我必须要有创意解决那个。

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

        【讨论】:

        • 以及问题二的答案。事实证明,如果您将“MultiSelectList”与 Listbox 一起使用,将“SelectList”与 DropDownList 一起使用,事情就会像他们应该的那样工作。我讨厌将我的错误归咎于 Razor,但这正是强类型,正确地,应该已经发现的情况。那好吧。 :-P
        猜你喜欢
        • 1970-01-01
        • 2014-09-22
        • 1970-01-01
        • 2013-02-14
        • 2023-04-08
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2022-01-06
        相关资源
        最近更新 更多