Навигация между элементами управления модуля DotNetNuke с помощью EditURL() или NavigateURL()

Хорошо, я новичок в DotNetNuke, и мне нужно написать простой модуль в DNN, который будет отображать статью для всех и позволит администратору редактировать статью/добавлять новую.

У меня есть тестовая страница, содержащая модуль DNN с одним определением модуля и двумя элементами управления в этом определении. Элемент управления по умолчанию показывает статью на основе поля articleID в строке запроса. Затем вы нажимаете кнопку, которая должна загрузить элемент управления редактирования, и передаете идентификатор статьи в строке запроса.

Если я использую EditURL() в onClick, элемент управления редактирования загружается с правильным идентификатором статьи, но с использованием скина администратора. Если я использую Globals.NavigateURL(), то отображается правильный скин, но мой элемент управления не загружается на странице.

Любая подсказка относительно того, что я делаю неправильно или как загрузить элемент управления редактированием с правильным скином?

Мои два метода переключения на элемент управления редактированием (в моем событии нажатия кнопки) перечислены ниже:

string newURL = this.EditUrl("articleID", Request.QueryString["articleID"], "EditArticle");

        Response.Redirect(newURL);

и

        string newURL = Globals.NavigateURL(this.TabId, "EditArticle","articleID="+Request.QueryString["articleID"]);

        Response.Redirect(newURL);

person hotbot86    schedule 15.12.2009    source источник
comment
Для получения дополнительной информации о том, как это работает, вы можете проверить мой блог на эту тему: weblogs.asp.net/briandukes/archive/2009/01/21/. В конечном счете, для вашей ситуации, когда вы хотите перейти к элементу управления редактированием без использования скина администратора, взгляните на варианты со второго по четвертый в разделе «Параметры навигации по модулям» Майкла Вашингтона по адресу adefwebserver.com/dotnetnukehelp/Misc/.   -  person bdukes    schedule 16.12.2009
comment
Спасибо за эти ссылки, они очень полезны, и я думаю, что элемент управления DynamicControlsPlaceholder — это то, что нужно для будущих модулей, ориентированных на клиентов.   -  person hotbot86    schedule 16.12.2009


Ответы (1)


На самом деле вы делаете это правильно - editurl в DNN загружает скин администратора - обычно этот скин основан на том, что кто-то управляет контентом, поэтому он удаляет все другие модули и показывает «основы». Правильно или неправильно это то, что он делает.

Если вы не хотите этого делать, вы можете указать переключатель в строке запроса и показать отдельную панель или выполнить управление несколькими представлениями и показать разные представления на основе переключателя в строке запроса.

Есть несколько других подходов, таких как изменение области содержимого на редактирование текстовой области с помощью ajax или использование всплывающих модальных окон.

person braindice    schedule 15.12.2009
comment
Спасибо. Я полагаю, что для моих текущих потребностей это приемлемое поведение, так как только администраторы будут видеть этот экран. Для будущих модулей, которые имеют несколько элементов управления, ориентированных на клиента, я думаю, что лучшим методом будет динамическая загрузка элементов управления через DynamicControlsPlaceholder, как это связано с bdukes выше. - person hotbot86; 16.12.2009
comment
Спасибо, я сам забыл об этом решении - да, оно тоже очень жизнеспособно. - person braindice; 16.12.2009