![](/img/trans.png)
[英]Is it possible to create a custom ASP.NET MVC strongly typed HTML Helper?
[英]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.