Как получить часть точек выражения модели в строго типизированном расширении HtmlHelper

#c# #asp.net-mvc-3 #html-helper

#c# #asp.net-mvc-3 #html-помощник

Вопрос:

хорошо, допустим, у меня есть следующая модель:

 public class bar{
    public string bar {get; set; }
}

public class foo{
    public bar mybar{get; set;}
    public string anotherproperty{get; set;}
}
  

И в пользовательском интерфейсе я хочу сделать это:

 @Html.MyWhackyHelperFor(x=>x.bar)
  

которое использует :

 public static MvcHtmlString MyWhackyHelperFor<TModel, TValue>(this HtmlHelper<TModel> htmlHelper, Expression<Func<TModel, TValue>> expression){
//how can i get a the actual bar object here?
}
  

как мне получить фактическую часть модели, на которую ссылаются?

Ответ №1:

Вам нужно скомпилировать выражение в метод, затем вызвать метод:

 TValue val = expression.Compile()(htmlhelper.ViewData.Model);
  

Комментарии:

1. мило. спасибо — было TValue val = выражение. Compile()(HtmlHelper.ViewData. Модель); если быть точным, ffr 🙂