То, что я пытаюсь сделать, - это создать метод расширения для HtmlHelper, чтобы создать определенный вывод и связанные детали, такие как TextBoxFor <>. То, что я хочу сделать, это указать свойство из класса модели согласно TextBoxFor <>, затем связанное действие контроллера и другие параметры.
Пока сигнатура метода выглядит так:
public static MvcHtmlString Create<TModel, TProperty, TController>(this HtmlHelper<TModel> htmlHelper, Expression<Func<TModel, TProperty>> expression, Expression<Action<TController>> action, object htmlAttributes)
where TController : Controller
where TModel : class
Проблема возникает, когда я иду, чтобы позвонить. На мой взгляд, если я вызываю его в соответствии с TextBoxFor без указания типа модели, я могу указать лямбда-выражение, чтобы установить свойство, для которого оно предназначено, но когда я иду, чтобы указать действие, я не могу.
Однако, когда я указываю тип контроллера Html.Create<HomeController>( ... )
, я не могу указать свойство модели, для которого должен быть создан элемент управления.
Я хочу иметь возможность называть это как
<%= Html.Create<HomeController>(x => x.Title, controller => controller.action, null) %>
Я уже несколько часов бьюсь головой об этой проблеме за последний день, может кто-нибудь указать мне правильное направление?
Edit:
Спасибо за ответы на это.
Таким образом, без указания всех типов, я думаю, что я могу жить с
<%= Html.Create(x => x.Title, ((HomeController)controller) => controller.action, null) %>
Но все же нужна ссылка на действие, а не на само действие
* вернемся к размышлениям:)
Редактировать # 2:
Я начинаю думать, что попытка сделать его строго строго типизированным немного надуман. Идти по тем же путям, что и предоставляемые методы расширения вспомогательного html, может быть, просто указав имя действия и имя контроллера в качестве строковых параметров - это путь ?! Но наверняка то, что я пытаюсь сделать, возможно? удар головой