簡體   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