Невозможно получить доступ к пользовательскому значению атрибута в шаблоне ASP MVC Core Editor. - PullRequest
0 голосов
/ 21 мая 2018

У меня есть следующий пользовательский атрибут

[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>
    }
}

I 'я пытаюсь получить доступ к пользовательскому атрибуту ColumnAttribute для свойств, которые его имеют, чтобы я мог добавить данный класс к редактору, обертывающему div.

Я пробовал:

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

Но не увенчался успехом, так как«ViewData.ModelMetadata.ContainerType» имеет значение null.

У кого-нибудь есть идеи?(Заранее большое спасибо)

1 Ответ

0 голосов
/ 21 мая 2018

Спасибо @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>

}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...