C # ASP.net EditorTemplate - получить имя свойства используемой модели - PullRequest
0 голосов
/ 07 ноября 2011

У меня есть вид бритвы, где я называю это:

@Html.EditorFor(m => m.Code)

Тогда у меня есть представление EditorTemplate, которое затем отображается, оно выглядит так:

@model string
@Html.HiddenFor(m=>m)

И я получаю этот вывод:

<input id="Code" name="Code" type="hidden" value="" />

Все хорошо.

Но теперь я просто хочу получить имя свойства Code внутри представления EditorTemplate, а не всю входную строку. Метод @Html.HiddenFor(m=>m) может каким-то образом получить его из объекта модели и поместить в поле ввода, но как я могу это сделать?

(И нет, я не хочу анализировать его из строки входного поля ...:)

1 Ответ

1 голос
/ 08 ноября 2011

@Html.HiddenFor(m=>m) кажется странным ... но в любом случае:

HiddenFor использует Expression<Func<TModel, TProperty>>, поэтому вы можете создать собственную функцию, возвращающую только имя:

 public static class GenericHelper<T>
 {
     public static String GetPropertyName<TValue>(Expression<Func<T, TValue>> propertyId)
     {
         var operant = (MemberExpression)((UnaryExpression)propertyId.Body).Operand;
         return operant.Member.Name;
     }
}

И создайте помощника, который будет использовать это внутри вашего представления, что объясняется здесь

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