【问题标题】:asp.net mvc use enum to display textvalueasp.net mvc 使用枚举来显示文本值
【发布时间】:2025-12-17 10:10:01
【问题描述】:

我正在使用 asp.net mvc 4,在我的页面中我有一个付款列表:

id | status| customerid
1  | 1     | 2

代码:

  <tr>
            <td>
                    @Html.DisplayFor(modelItem => item.id)
            </td>
            <td>

         @{
            var status = ((status)(modelItem => item.StatusId)).toString();
         }

            </td>
            <td>
                    @Html.DisplayFor(modelItem => item.CustomerId)
            </td>
         </tr>

我在控制器中定义了一个枚举:

enum status { Pending = 1, Paid = 2 };

如何在我的 razorpage 上显示文本 ie Pending 而不是 id 1?我现在遇到错误:

 Cannot convert lambda expression to type 'MyApp.Models.status' because it is not a delegate type

【问题讨论】:

标签: asp.net asp.net-mvc-4 razor-2


【解决方案1】:

您可以扩展 HtmlHelper(一种将呈现文本而不是 id 编号的方法) 见How to extend html helper

【讨论】:

    【解决方案2】:

    您需要先将枚举转换为

    var status=((status)(modelItem => item.StatusId)).toString();
    

    这应该给你枚举的名称。

    然后你可以使用@Html.Label( 在你的视图上渲染它而不是@Html.DisplayFor(modelItem =&gt; item.StatusId)

    更多关于casting enum的详情

    【讨论】: