亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

使用標簽助手在選擇元素中選擇一個選項

使用標簽助手在選擇元素中選擇一個選項

犯罪嫌疑人X 2024-01-03 16:29:22
這是我的情況:在 ASP.NET Core 應用程序中,我需要從模型實例在 Razor 視圖中生成以下 HTML 代碼:<select name="CultureName">    <option value="de-DE" data-summary="Deutsch (Deutschland)">* Deutsch (Deutschland)</option>    <option value="de-AT" data-summary="Deutsch (?sterreich)">* Deutsch (?sterreich)</option>    <option value="de-CH" data-summary="Deutsch (Schweiz)">* Deutsch (Schweiz)</option>    <option value="en-GB" data-summary="Englisch (Gro?britannien)" selected>Englisch (Gro?britannien)</option>                                                                   ^^^^^^^^- important!    <option value="en-US" data-summary="Englisch (USA)">Englisch (USA)</option></select>模型的屬性CultureName值為“en-GB”。該模型還具有所有可用選項的列表。我使用的 Web 前端框架支持單獨的data-summary屬性,需要在每個元素上設置該屬性<option>,以及為簡潔起見而在此處省略的其他屬性。選項之一由selected屬性預先選擇。我無法使用預定義的SelectListItem類,因為它不支持附加屬性。所以我創建了自己的SelectListOption類,它看起來相似但具有附加屬性。我有一個標簽助手,可以讓我這樣寫:<select asp-for="CultureName">    @foreach (var culture in Model.Cultures)    {        <option item="@culture"></option>    }</select>這是代碼:[HtmlTargetElement("option", ParentTag = "select", Attributes = "item")]public class OptionTagHelper : TagHelper{    public SelectListOption Item { get; set; }    public override void Process(TagHelperContext context, TagHelperOutput output)    {        if (Item != null)        {            output.Content.SetContent(Item.Text);            output.Attributes.SetAttribute("value", Item.Value);            if (Item.Summary != null)                output.Attributes.SetAttribute("data-summary", Item.Summary);            if (Item.HtmlText != null)                output.Attributes.SetAttribute("data-html", Item.HtmlText);            if (Item.HtmlSummary != null)                output.Attributes.SetAttribute("data-summary-html", Item.HtmlSummary);        }    }}它填充<option>模型中元素的其他屬性。這很好用,但渲染頁面時會忽略選擇。因此,用戶將看到包含所有選項的列表,但缺少當前選擇。
查看完整描述

1 回答

?
慕慕森

TA貢獻1856條經驗 獲得超17個贊

你沒有對 做任何事情asp-for。這不是魔法。如果您查看其中一個內置標記幫助程序的代碼,您將看到它們具有用于捕獲此內容的屬性,大致如下:

[HtmlAttributeName("asp-for")]
public ModelExpression For { get; set; }

然后,您必須使用此屬性通過讀取值來實際設置所選選項。盡管如此,如果您簡單地從 繼承標簽助手SelectTagHelper,然后重寫Process以執行您自己的邏輯,您可能會得到更好的服務。base.Process不過也要記得打電話。


查看完整回答
反對 回復 2024-01-03
  • 1 回答
  • 0 關注
  • 178 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號