簡體   English   中英

如何在ASP.NET中輸出HTML Table而不是Select框(由ListBoxFor生成)?

[英]How to output HTML Table instead of a Select box (generated with ListBoxFor) in ASP.NET?

我通常對ASP.NET並不陌生,並且正在修改一些我繼承的代碼。 有一段代碼可根據用戶輸入的搜索詞使用ListBoxFor創建選擇框:

@Html.ListBoxFor(m => m.SelectedItem, 
                 Lookup.Models.myService.Search(Model.SearchTerm, 
                                         null == Model.SelectedCity ? 1 :  
                                         Int32.Parse(Model.SelectedCity))

Search()的簽名為:

public static List<SelectListItem> Search(string term, string city)

我不想顯示選擇框,而是要輸出帶有數據的HTML表。 我什至不知道該怎么做,或者究竟是什么信息可以給大家以幫助我:)

ListBoxFor幫助程序顯示具有multiple="multiple"屬性的<select>元素,允許多個選擇。 如果您需要其他幫助,則不要使用此幫助器。 所以您說您想要一個HTML表。

現在,您顯示的代碼出了點問題。 您正在視圖內調用Lookup.Models.myService.Search 視圖不應從某些地方提取數據。 它們應該僅顯示通過控制器動作以視圖模型的形式傳遞給它們的數據。 因此,不應在視圖中完成此調用。 應該事先完成,並將結果存儲為視圖模型中的屬性:

public IEnumerable<SelectListItem> Items { get; set; }

無論如何。 第一種可能性是自己編寫標記:

<table>
    <thead>
        <tr>
            <th>Value</th>
            <th>Text</th>
        </tr>
    </thead>
    <tbody>
        @foreach (var item in Model.Items)
        {
            <tr>
                <td>@item.Value</td>
                <td>@item.Text</td>
            </tr>
        }
    </tbody>
</table>

當然,一遍又一遍地編寫此代碼可能會變得很麻煩。 因此,您可以在DisplayTemplate中將其外部化。 例如,您可以將其放在~/Views/Shared/DisplayTemplates/MyTableTemplate.cshtml ,然后當需要在視圖中呈現它時,可以使用:

@Html.DisplayFor(x => x.Items, "MyTableTemplate")

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM