Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-mvc/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何显示模型名称(基本上是LabelFor';的内部文本)?_C#_Asp.net Mvc - Fatal编程技术网

C# 如何显示模型名称(基本上是LabelFor';的内部文本)?

C# 如何显示模型名称(基本上是LabelFor';的内部文本)?,c#,asp.net-mvc,C#,Asp.net Mvc,我希望具有打印模型成员名称/显示名称的功能。这类似于使用HtmlHelper.LabelFor,但文本没有包装在标签中。MVC中是否已经内置了一种扩展方法用于此目的?我找不到一个,所以我查看了LabelFor对Reflector的作用,并制作了一个LabelTextFor方法: public static string LabelTextFor<TModel, TValue>(this HtmlHelper<TModel> source, Expression<Fu

我希望具有打印模型成员名称/显示名称的功能。这类似于使用
HtmlHelper.LabelFor
,但文本没有包装在
标签中。MVC中是否已经内置了一种扩展方法用于此目的?我找不到一个,所以我查看了
LabelFor
对Reflector的作用,并制作了一个
LabelTextFor
方法:

public static string LabelTextFor<TModel, TValue>(this HtmlHelper<TModel> source, Expression<Func<TModel, TValue>> expression)
{
    var memberName = ExpressionHelper.GetExpressionText((LambdaExpression)expression);

    var metadata = ModelMetadata.FromLambdaExpression(expression, new ViewDataDictionary<TModel>());

    return metadata.DisplayName ?? metadata.PropertyName ?? memberName.Split('.').Last();
}
public静态字符串LabelTextFor(此HtmlHelper源代码,表达式)
{
var memberName=ExpressionHelper.GetExpressionText((LambdaExpression)表达式);
var metadata=modelmetada.FromLambdaExpression(表达式,new ViewDataDictionary());
返回metadata.DisplayName??metadata.PropertyName??memberName.Split('.').Last();
}

我想我也应该改变这个方法的名称。感谢您的想法。

MVC附带的HTML扩展不是为定制外观而设计的,而是为您的目的而设计的更具“语义”的描述


您想要做的实际上更简单,不需要额外的扩展,而是通过自定义模板。请看一看如何做到这一点

我决定使用我创建的方法。

当然,我理解内置扩展的语义。我用一个模型的名字做了一些非常明确的事情,它不需要模板或其他任何东西。无论如何,在看到Brad使用
ModelMetadata
提取信息后,我认为我使用当前的扩展方法是安全的。也许改名会更适合我的需要。谢谢