无法访问 ASP MVC 核心编辑器模板中的自定义属性值



>我有以下自定义属性

[AttributeUsageAttribute(AttributeTargets.Property, AllowMultiple = false)]
public class ColumnAttribute : Attribute
{
public ColumnAttribute(int size)
{
Class = "col-md-" + size.ToString();
}
public string Class { get; set; }
}

还有一个通用编辑器模板,它循环遍历模型中的所有属性并吐出所需的标记:

@model dynamic
@foreach (var prop in ViewData.ModelMetadata.Properties)
{
if (prop.TemplateHint == "HiddenInput")
{
@Html.Hidden(prop.PropertyName)
}
else
{
//Access properties attribute and use it to populate class
<div class="">
@Html.Editor(prop.PropertyName)
</div>
}
}

我正在尝试访问具有它的属性上的自定义 ColumnAttribute,以便我可以将给定的类添加到编辑器包装div 中。

我试过:

var Member = ViewData.ModelMetadata.ContainerType.GetMember(ViewData.ModelMetadata.PropertyName);
var attr = Member[0].GetCustomAttribute<ColumnAttribute>();

但没有成功,因为"ViewData.ModelMetadata.ContainerType"为空。

有人有什么想法吗?(提前非常感谢(

谢谢@Brad。解决了:

@model dynamic
@foreach (var prop in ViewData.ModelMetadata.Properties)
{
if (prop.TemplateHint == "HiddenInput")
{
@Html.Hidden(prop.PropertyName)
}
else
{
string attrclass = "";
Type type = prop.ContainerType;
if (type != null)
{
var attr = type.GetMember(prop.PropertyName)[0].GetCustomAttribute<ColumnAttribute>();
if(attr!= null)
{
attrclass = attr.Class;
}

}
<div class="@attrclass">
<div class="input-field">
@Html.Editor(prop.PropertyName)
</div>
</div>
}

最新更新