在特定的视图中,我通过以下方式将新模型传递给局部视图:
@Html.Partial("view.cshtml", new Model1())
然后在部分我需要访问它的所有属性和属性,包括我做的新自定义属性。
我的新属性使用MetadataAware:
public class ReportDescriptionAttribute : Attribute, IMetadataAware
{
public ReportDescriptionAttribute(string resourceKey)
{
this.ReportDescription = resourceKey;
}
public string ReportDescription { get; set; }
public void OnMetadataCreated(ModelMetadata metadata)
{
metadata.AdditionalValues["ReportDescription"] = this.ReportDescription;
}
}
所以在我的模型上,我现在可以使用[ReportDescription("resourcekey")]
但在我的部分视图中,当我使用@foreach (var property in ViewData.ModelMetadata.Properties)
时,它不显示。
*我还创建了HTML帮助程序类,如this非常相似的问题中所述,但无法使其工作。
思考?谢谢你的帮助
答案 0 :(得分:0)
上面,斯蒂芬能够指出我正确的方向。我的附加属性是在整个时间,我甚至不需要辅助类,只需要IMetaDataAware。
@foreach (var property in ViewData.ModelMetadata.Properties)
{
<div style="margin:10px">
<strong>@(property.DisplayName)</strong>
<br />
@foreach (var addProp in property.AdditionalValues)
{
if (addProp.Key == "ReportDescription")
{
<span>@addProp.Value</span>
}
}
</div>
}