c# - 如何获取模型的 "description"属性而不是 "name"属性 - (MVC asp.net)

标签 c# asp.net-mvc asp.net-mvc-4 data-annotations

<分区>

我有一个模型和一个字段……等等。这很简单。但是,我需要从我的 View 中获取字段中的“描述”属性和您的“名称”属性。使用 @Html... 很明显,可以使用“DisplayNameFor”返回此值。但是,如何获得“Description”属性呢?没有像@Html.DisplayDescription 这样的助手?有可能得到这个吗?

[Column("abc")]
[Display(Description = "The Description", GroupName = "The Group", Name = "The Name")]
public string field { get; set; }

谢谢你的帮助。 对不起,英语不好。 ;)

最佳答案

您可以从元数据中获取它:

@model MyViewModel

@{
    var description = ModelMetadata.FromLambdaExpression<MyViewModel, string>(x => x.field, ViewData).Description;
}

@description

或者,如果您像我一样发现在 View 中编写的这段代码非常糟糕,您可以将其封装在可重用的帮助程序中:

public static class HtmlExtensions
{
    public static IHtmlString DescriptionFor<TModel, TValue>(
        this HtmlHelper<TModel> html, 
        Expression<Func<TModel, TValue>> expression
    )
    {
        var metadata = ModelMetadata.FromLambdaExpression(expression, html.ViewData);
        var description = metadata.Description;
        return new HtmlString(description);
    }
}

所以在你看来你可以这样使用:

@model MyViewModel

@Html.DescriptionFor(x => x.field)

关于c# - 如何获取模型的 "description"属性而不是 "name"属性 - (MVC asp.net),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18234596/

相关文章:

c# - 当每个索引都有一组项目时从列表集合中检索项目

c# - 单击复选框时的 ASP.NET MVC 提交表单

.net - Log4net登录到开发人员计算机中,但在测试服务器中未登录

c# - 实体对象附加/未附加到 dbContext

c# - .NET MVC API - 获取请求中的点(句号)

asp.net-mvc-4 - 了解新的 Web API 方法

c# - Azure Durable Functions - HostBuilder 的等效项在哪里?

c# - KeyValuePair 的默认值

c# - 如何防止应用程序在完成任务前关闭?

c# - 从数据库中检索所有数据得到第二行与第一行相同