2013-11-29 4 views
0

У меня есть контрольная учетная запись и ее метод LogOn. Как создать карту сайта вот так:Как создать группировку и кликабельные узлы из одного действия одновременно?

-Account // non clickable, just grouping 
--Log On // clickable 

? Если я использую карту сайта в виде XML-файла (mvc.sitemap) можно написать так:

<mvcSiteMapNode 
    title="Account" 
    controller="Account" 
    action="LogOn" 
    clickable="false" 
    key="AccountGroup" > 

    <mvcSiteMapNode 
     title="Log On" 
     controller="Account" 
     action="LogOn" 
     key="LogOn" /> 
</mvcSiteMapNode> 

Но я хочу сделать это только с атрибутом MvcSiteMapNodeAttribute. Однако к методу может применяться только один такой атрибут. Я также не хочу использовать какой-то фиктивный метод для создания только узла группировки.

На данный момент у меня есть только один подход - создайте узлы группировки в файле XML mvc.sitemap и кликабельные узлы - с атрибутом MvcSiteMapNodeAttribute. Но я хочу убежать, чтобы написать карту сайта руками, насколько это возможно. Можно ли это сделать без группировки узлов в XML?

ответ

1

Если вы используете v4, вы можете применить несколько MvcSiteMapNodeAttributes к одному методу действия.

// 
// GET: /Account/LogOn 
[MvcSiteMapNodeAttribute(Title = "Account", ParentKey = "Home", Key = "AccountGroup", Clickable = false)] 
[MvcSiteMapNodeAttribute(Title = "Log On", ParentKey = "AccountGroup", Key = "LogOn")] 
public ActionResult LogOn() 
{ 
    return View(); 
} 

Вы также можете поместить группирования узла в классе контроллера, если это то, что вы предпочитаете (даже в v3).

[MvcSiteMapNodeAttribute(Title = "Account", ParentKey = "Home", Action = "LogOn", Key = "AccountGroup", Clickable = false)] 
public class AccountController 
{ 

    // Implementation here 
} 
+0

Хм ... мне кажется, что первый вариант работает и в моей версии 3.2.2.0. А для второго замечания второй вариант также работает для меня, но кроме Action named parameter - он просто не присутствует в конструкторе атрибутов даже для атрибута уровня класса. – user808128

+0

Возможно, вам также придется явно указать контроллер. Я не уверен, как это было сделано в вашей версии, но я знаю, как отражение атрибутов немного изменилось. У v4 есть много исправлений ошибок, от которых вы могли бы выиграть, но требует некоторой работы для обновления. https://github.com/maartenba/MvcSiteMapProvider/wiki/Upgrading-from-v3-to-v4 – NightOwl888

 Смежные вопросы

  • Нет связанных вопросов^_^