繁体   English   中英

MVC.NET:为DropDownList定义强类型HTML帮助器

[英]MVC.NET: define a strongly typed HTML Helper for DropDownList

我试图找出如何定义自己的HtmlHelper来创建下拉列表。 我有以下场景:我将select2 jQuery插件( http://ivaynberg.github.io/select2/ )用于具有搜索和更好界面的多项选择。 我的模型具有x个ID的关联标签。 据我了解,仅当使用@ Html.DropDownListFor()之类的HTML帮助程序时,这些标签才能获得值。 我想要

  • 写纯HTML并以某种方式告诉它值必须存储在我的模型的tag-id列表中

    要么

  • 制作可以实现相同效果的HTML Helper。

目前,我已经有了这个,但是在表单发布时,我看不到将所选值传递给模型的方法:

<div>
        <label>Kies je thema's (maximum 2):</label>
        <select id="select2select" multiple style="width: 500px">
            @foreach (var top in ((List<Topic>)ViewBag.TopIds).Where(top => top.MainTopic == null))
            {
                <option value="@top.TopicId" class="optionGroup">@top.Name</option>
                foreach (var subTopic in top.SubTopics)
                {
                    <option value="@subTopic.TopicId" class="optionChild">@subTopic.Name</option>
                }
            }
        </select>
    </div>

如何在保持此结构的同时在列表的属性中获取选定的值?

附加:如您所见,我的选项有类,这是因为我有Main标签和subtags。 用户可以选择主标签或子标签,因此我不能使用<optiongroup>因为它们的“组”必须是可选的。 根据他们的班级,我给他们提供了使用select2格式的不同格式。

请尝试以下代码以纠正问题

 @Html.DropDownListFor(m => top.SubTopics, new SelectList(top.SubTopics, "TopicId", "Name"))

您可以通过两种方法来执行此操作。

@Html.DropDownListFor(m => top.SubTopics, new SelectList(top.SubTopics, "TopicId", "Name"))

@Html.DropDownListFor(m => Model.SubTopics, Model.SubTopics, null, htmlAttributes: new { @class = "ui search selection dropdown clearable", @clearable = "", @id = "Model_SubTopics" })

对于不同的模型绑定,这两个更改html属性“名称”值可能会有问题。

您可以使用Tag Helper以更现代的方式进行操作。

<select asp-for="Model.SubTopics" asp-items="@Model.SubTopics"  class="ui search selection dropdown clearable" ></select>

如果您具有输入表单的模型绑定,则这种方式将采用预先配置的值。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM