Я создаю страницы с помощью DNN API следующим образом:

public int AddPage(string name, string title, string url, int parentPageID = 0)
{
    TabController pageManager = new TabController();
    TabInfo newPage = new TabInfo();
    newPage.PortalID = _PortalID;
    newPage.TabName = name;
    newPage.Title = title;
    newPage.ParentId = parentPageID;
    newPage.SkinPath = "/path-to-skin";
    newPage.SkinSrc = "/path-to-skin/skin-name.ascx";
    int newPageID = pageManager.AddTab(newPage);

    TabUrlInfo tabUrlInfo = new TabUrlInfo();
    tabUrlInfo.TabId = newPageID;
    tabUrlInfo.Url = url;
    tabUrlInfo.HttpStatus = "200";
    tabUrlInfo.SeqNum = 1;
    newPage.TabUrls.Add(tabUrlInfo);
    pageManager.UpdateTab(newPage);

    var parentPage = GetPage(parentPageID);
    _AddDDRMenuToPage(newPageID, parentPage.TabName);
    return newPageID;
}

Такой подход TabUrlInfo не влияет, а newPage.Url устанавливает страницу как ссылку. Я хочу изменить следующее свойство: введите описание изображения здесь

Есть идеи, где я ошибаюсь?

РЕДАКТИРОВАТЬ:
Я сделал еще один шаг, используя эту строку кода:

PageManager.SaveTabUrl(tabUrlInfo, _PortalID, true);

Что заменяет эти две строки:

newPage.TabUrls.Add(tabUrlInfo);
pageManager.UpdateTab(newPage);

Использование SaveTabUrl правильно сохраняет запись в таблице TabUrls, но когда я пытаюсь перейти к настройкам страницы, я получаю ошибку 404?

0
Jacques 12 Июн 2017 в 20:21

1 ответ

Лучший ответ

Вы можете использовать TabController> SaveTabUrl. Это от DNN 7.3 и выше.

//create a new tabcontroller instance
TabController controller = new TabController();

//create a new tab with some properties
TabInfo newTab = new TabInfo();
newTab.PortalID = 0;
newTab.TabName = "TabNaam";
newTab.Title = "TabTitel";

//add the new tab and get it's new tabid
int newTabId = controller.AddTab(newTab);

//create a new taburlinfo insance and set some propeties
TabUrlInfo tabUrl = new TabUrlInfo();
tabUrl.TabId = newTabId;
tabUrl.SeqNum = 0;
tabUrl.Url = "/dit-is-een-test";
tabUrl.HttpStatus = "200";

//save the url info
controller.SaveTabUrl(tabUrl, PortalId, true);
0
VDWWD 13 Июн 2017 в 16:25
Yip Я пришел к тому же самому моменту, который вы можете видеть в моем редактировании, но единственное, чего я не знал, это то, что вы не можете указать значение URL-адреса с пробелами в них, поэтому я заменил замену пробелов дефисами.
 – 
Jacques
14 Июн 2017 в 11:48