簡體   English   中英

DisplayFor() 顯示從下拉列表中選擇的內容

[英]DisplayFor() to show what was selected from a drop down list

所以下拉列表有值/文本。 該值是我存儲在數據庫中的值(因為它是列出要在下拉列表中顯示的值/文本的表的主鍵)。 當我填充我的下拉列表時,我使用值/文本。 當用戶選擇時,它將值(數字)存儲到事務表中。 這意味着當我將它讀回我的 model 時,我得到的是數值而不是文本。 但是,在選擇 24 小時后,我只需要顯示文本,因為它們無法進行更改。 問題是它顯示值 (1, 2, 3, 4) 而不是對人類更有意義的實際文本。

有沒有辦法在視圖級別轉換它? 我問的原因是因為我的模板分支並充當顯示模板和編輯器模板,因為這是頁面所需的功能。 因此,我可以通過以下方式輕松地在編輯器模板部分中顯示所選值:

@Html.DropDownListFor(modelItem => item.RecordType, new SelectList(Model.RecordTypes, "RECORD_TYPE_ID", "RECORD_TYPE", item.RecordType)

但顯示部分有:

@Html.DisplayFor(modelItem => item.RecordType)

這給了我價值數字而不是文本。 我真的必須在我的視圖 model 中創建另一個字段並為每條記錄填充文本和值嗎? 正如您從 DropDownListFor() 中看到的那樣,我有存儲值/文本的 RecordTypes 列表,所以我可以使用該值查找文本並通過 DisplayFor() 或其他 function 從模板視圖中顯示它嗎?

一種替代方案可能是:

@Html.DisplayFor(modelItem =>
    Model.RecordTypes.FirstOrDefault(rt => rt.RECORD_TYPE_ID == item.RecordType))

更新:正如評論中所述,正確的方法最終是:

@Model.RecordTypes.FirstOrDefault(rt => rt.RECORD_TYPE_ID == item.RecordType).RECORD_TYPE.ToString()

它只顯示字符串值。

@Html.LabelFor(m => m.Action)

@Html.DisplayFor(m => m.ActionTypes.FirstOrDefault(c => c.Value == m.Action.ToString()).Text)

這非常有效!

暫無
暫無

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

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