gpt4 book ai didi

c# - 具有类型和属性名称的 Html.LabelFor?

转载 作者:行者123 更新时间:2023-11-30 21:51:00 26 4
gpt4 key购买 nike

有没有办法这样写:

@Html.LabelFor(typeof(StackViewModel), "SomeProperty")

我正在生成一个表(但不能使用@Html.TableFor)并想使用@Html.LabelFor 生成表列标题,但由于该表可能有也可能没有任何行,所以我不没有可使用的对象,只有该对象的类型。

编辑:澄清一下,我希望使用 typeof() 因为我的情况是这样的:

@Html.LabelFor(Model.TableRows.First().Id)

如果“TableRows”没有行,.First() 抛出。

最佳答案

如果你想使用非泛型 Html助手并传递 Type和属性名称,作为一个选项,您可以创建这样的扩展方法:

public static MvcHtmlString DisplayNameFor(this HtmlHelper html, 
Type modelType, string expression)
{
var metadata = ModelMetadataProviders.Current
.GetMetadataForProperty(null, modelType, expression);
return MvcHtmlString.Create(metadata.GetDisplayName());
}

然后你可以这样使用它:

@Html.DisplayNameFor(typeof(Sample.Models.Category), "Id")

注意:

  • 如果需要,您可以增强该方法并添加一些验证规则和异常处理。
  • 对于您的模型类型为 IEnumerable<T> 的情况您可以为您的属性(property)使用 lambda 表达式,例如 x=>x.Id你可以使用 @Html.DisplayNameFor(x=>x.Id) .如果 Model 也有效为空或没有行。

关于c# - 具有类型和属性名称的 Html.LabelFor?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35935834/

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