是否可以从viewdata.modelmetadata.properties?

时间:2015-06-09 13:41:34

标签: asp.net-mvc-4

在特定的视图中,我通过以下方式将新模型传递给局部视图:

@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非常相似的问题中所述,但无法使其工作。

思考?谢谢你的帮助

1 个答案:

答案 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>
}