views:

28

answers:

1

I have my own html helper extension, wich I use this way

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

which declared like this.

 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);
        }

but when I open it in debugger expr.Body.ToString() will show me Convert(model.Reason_ID). But should model.Reason_ID. That's a big problem, becouse ExpressionHelper.GetExpressionText(expr) returns empty string. What a strange magic is that? How can I get rid of it?

+1  A: 

The problem lies with your Func generic types. Replace Func<T,object> with Func<T,S> and you'll be good to go:

public static MvcHtmlString LocalizableLabelFor<T,S>(this HtmlHelper<T> helper, Expression<Func<T, S>> expr, string captionValue) where T : class
{
    // ... code ...
}
Shay Friedman
Thank you very much!
er-v