Хорошо, это для меня очень сложная задача. Мы берем наш существующий веб-сайт ASP.NET и конвертируем (перепроектируем только PL) в MVC. Наш сайт очень сложный. Но сложная часть состоит в том, чтобы преобразовать существующие пользовательские элементы управления в MVC. Пользовательские элементы управления (я не говорю о пользовательских элементах управления) - это, конечно, класс, который в настоящее время наследует System.Web.UI.Control и использует этот объект повсюду. Например, у нас есть некоторые свойства в верхней части этого существующего пользовательского класса, например:
Dictionary<int, Control> configControls;
DropDownList kControl;
CheckBox confirmBox;
Это все переменные типа веб-элементов управления в классическом ASP.NET.
Так что я подумал, что, возможно, что я мог бы сделать (не создавая полностью новые пользовательские элементы управления с нуля), это использовать объект HtmlHelper. Итак, я попробовал это:
(сначала включите оператор using, который включает System.Web.MVC.Html в начале моего нового пользовательского класса в нашем новом веб-проекте)
приватный помощник HtmlHelper;
Словарь configControls;
helper.DropDownList
но это не работает. Я думаю, я не могу использовать этот объект так же, как этот ?? Я подумал, что могу использовать HtmlHelper в словаре, а затем сделать типы переменных из помощника. но это всего лишь методы расширения, а не объекты
Я не знаю эквивалента чему-то вроде универсального «элемента управления», который мы имели в наличии для наследования, например, в классическом ASP.NET. Конечно, в MVC это будет не то же самое (без сохранения состояния и совершенно другого способа работы), но что я могу использовать в MVC с таким же концептуальным видом?
Так что я подумал, что, возможно, что я мог бы сделать (не создавая полностью новые пользовательские элементы управления с нуля), это использовать объект HtmlHelper. Итак, я попробовал это:
(сначала включите оператор using, который включает System.Web.MVC.Html в начале моего нового пользовательского класса в нашем новом веб-проекте)
private HtmlHelper helper;
Dictionary configControls;
helper.DropDownList
но это не работает. Я даже не знаю, будет ли этот подход работать в моем пользовательском контроле. И когда я пытаюсь использовать свою вспомогательную переменную, я не получаю методы расширения, если только она не находится внутри существующего метода расширения, где в сигнатуру передается параметр HtmlHelper. Поэтому, когда я создаю эту частную переменную только в моем пользовательском классе снаружи, я ничего не получаю intellisense на выбор при выполнении «помощник». Так что мне нужно определить этот объект следующим образом:?
private HtmlHelper htmlHelper = new HtmlHelper();
но он запрашивает ViewContext и IViewDataContainer в качестве параметров. Если я создаю собственный метод, который еще ничего не знает о его представлении (в этом нет необходимости), потому что я просто создаю строки HMTL в этом пользовательском классе для передачи в метод Extension, чтобы в конечном итоге выплюнуть поля может быть, я не могу использовать HtmlHelper таким образом в пользовательском классе, подобном этому.
Так можно ли использовать этот объект каким-либо образом вместо «Контроля»? Может быть, я могу даже в моей словарной переменной использовать тип объекта вместо элемента управления? Я не знаю, а затем приведу объект к типу HtmlHelper, когда мне нужно использовать или ссылаться на это значение из словаря? Но сейчас я решил, что могу использовать объект HtmlHelper в Словаре, а затем создавать типы переменных из помощника. но это всего лишь методы расширения, а не объекты.
Надеюсь, у меня есть смысл, когда ты читаешь это.