gpt4 book ai didi

c# - 在 Razor View 中显示枚举描述

转载 作者:行者123 更新时间:2023-11-30 19:37:59 25 4
gpt4 key购买 nike

我有一个具有如下枚举属性的模型:

namespace ProjectManager.Models
{
public class Contract
{
.....
public enum ContractStatus
{
[System.ComponentModel.Description("جديد")]
New,
[System.ComponentModel.Description("در انتظار پرداخت")]
WaitForPayment,
[System.ComponentModel.Description("پرداخت شده")]
Paid,
[System.ComponentModel.Description("خاتمه يافته")]
Finished
};

public ContractStatus Status { get; set; }
.....
}

}

在我的 Razor View 中,我想显示每个项目的枚举描述,例如ìديد 而不是 New。我尝试按照 this answer 中的说明进行操作,但我不知道在哪里添加扩展方法以及如何在我的 razor View 文件中调用扩展方法。如果有人可以完成我的代码,我将不胜感激:

@model IEnumerable<ProjectManager.Models.Contract>
....
<table class="table">
<tr>
.....
<th>@Html.DisplayNameFor(model => model.Status)</th>
.....
</tr>

@foreach (var item in Model) {
<tr>
......
<td>
@Html.DisplayFor(modelItem => item.Status) //<---what should i write here?
</td>
....
<td>
@Html.ActionLink("Edit", "Edit", new { id=item.Id }) |
@Html.ActionLink("Details", "Details", new { id=item.Id }) |
@Html.ActionLink("Delete", "Delete", new { id = item.Id })|
</td>
</tr>
}

最佳答案

您可以将扩展方法放在任何地方。例如,在您当前的项目中,添加一个文件夹(例如)Extensions,然后添加一个静态类

namespace yourProject.Extensions
{
public static class EnumExtensions
{
public static string DisplayName(this Enum value)
{
// the following is my variation on the extension method you linked to
if (value == null)
{
return null;
}
FieldInfo field = value.GetType().GetField(value.ToString());
DescriptionAttribute[] attributes = (DescriptionAttribute[])field
.GetCustomAttributes(typeof(DescriptionAttribute), false);
if (attributes.Length > 0)
{
return attributes[0].Description;
}
return value.ToString();
}
}
}

虽然我会考虑创建一个单独的项目并在您当前的项目中添加对它的引用,以便您可以跨多个项目使用它(以及其他有用的扩展方法)。

然后在 View 中包含一个@using yourProject.Extensions;语句并将其用作

<td>@item.Status.DisplayName()</td>

另请注意,为避免在 View 中使用 using 语句,您可以将程序集添加到您的 web.config.cs 文件

<system.web>
....
<pages>
<namespaces>
<add namespace="System.Web.Helpers" />
<add namespace="yourProject.Extensions" />

关于c# - 在 Razor View 中显示枚举描述,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35880395/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com