Почему model => model.Reason_ID превращается в model => Convert (model.Reason_ID) - PullRequest
6 голосов
/ 29 мая 2010

У меня есть собственное расширение html-помощника, которое я использую таким образом

<%=Html.LocalizableLabelFor(model => model.Reason_ID, Register.PurchaseReason) %>

который объявлен так.

 public static MvcHtmlString LocalizableLabelFor<T>(this HtmlHelper<T> helper, Expression<Func<T, object>> expr, string captionValue) where T : class {
            return helper.LocalizableLabelFor(ExpressionHelper.GetExpressionText(expr), captionValue);
        }

но когда я открою его в отладчике expr.Body.ToString () покажет мне Convert (model.Reason_ID). Но должен модель. Reason_ID. Это большая проблема, потому что ExpressionHelper.GetExpressionText (expr) возвращает пустую строку. Что за странная магия? Как от этого избавиться?

1 Ответ

7 голосов
/ 29 мая 2010

Проблема связана с вашими универсальными типами Func. Замените Func<T,object> на Func<T,S>, и все будет хорошо:

public static MvcHtmlString LocalizableLabelFor<T,S>(this HtmlHelper<T> helper, Expression<Func<T, S>> expr, string captionValue) where T : class
{
    // ... code ...
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...