Я пытаюсь создать пользовательский элемент управления в ASP.NET MVC. Вещь, которую я хочу избежать, заключается в смешении вида (html) и кода (C#) в этих элементах управления.Передача ViewData в ViewPage в ASP.NET MVC
После долгих поисков в Интернете и борьбы с этой проблемой я, наконец, подумал о создании вспомогательных методов, которые используют ASP view Engine, который думал о классе ViewPage.
Я могу создать экземпляр класса и даже загрузить шаблон ascx с использованием методов LoadControl и LoadTemplate, но проблема в том, что при передаче объекта ViewData экземпляру класса ViewPage я не вижу ViewData в ViewPage, и я получаю эту ошибку:
The ViewUserControl '~/Components/Controls/EditableLabel/Views/EditableLabel.ascx' cannot find an IViewDataContainer. The ViewUserControl must be inside a ViewPage, ViewMasterPage, or another ViewUserControl.
Вообще конечный эффект, который я хочу достичь загружается управления с некоторыми параметрами, эти параметры должны быть читаемыми в шаблоне (ASCX).
пример:
<% Html.EditableLabel(Writer, "memberName", "Name", "Antonio", "/identity/updateProperty", "memberName"); %>
- Есть ли способ, чтобы передать ViewData к экземпляру ViewPage, что я создаю?
- Есть ли более разумный способ создания пользовательских элементов управления/виджетов в ASP.NET MVC?
Заранее спасибо
Если вы используете защиту, вероятность прохождения VD значительно снижается –
Что вы подразумеваете под «защитой» и почему она уменьшена? Элементы управления могут использовать привязки значений, чтобы они могли загружать значения из ViewDataDictionary или из модели. – zihotki
@Rexm lol! @zihotki наслаждаются бризом. –