HttpPost Маршрут взлома карт

У меня есть трехуровневый путь просмотра, который я пытаюсь направить и нанести на карту.

[Route("parent", Name = "parent")]
[MvcSiteMapNode(Title = "Parent", ParentKey = "home", Key = "parent")]
public ActionResult parent()
{
    ...............
}

[Route("parent/child/{param}", Name = "child")]
[MvcSiteMapNode(Title = "Child", ParentKey = "parent", Key = "child", PreservedRouteParameters = "param")] 
public ActionResult child(int param)
{
    ..............
}

[Route("parent/child/{param}/{filterparam1 ?}/{filterparam2 ?}")]
[HttpPost]
public ActionResult child(int param, int filterparam1 = 0, int filterparam2 = 0 )
{
    ..............
}

[Route("parent/child/grandchild/{param}/{name}")]
[MvcSiteMapNode(Title = "Grandchild", ParentKey = "child", Key="grandchild", PreservedRouteParameters = "param, name")]
public ActionResult grandchild(int param, string = name)
{
    ..............

    var node = SiteMaps.Current.CurrentNode;
    node.Title = model.name;

    ..............
}

У меня проблема в том, что если я включу тег [Route] в [HttpPost]:

[Route("parent/child/{param}/{filterparam1 ?}/{filterparam2 ?}")]
[HttpPost]

Мой фильтр обратной передачи работает, но внук не включается в дерево маршрутизации, не отображается на крошке и коде узла. Ошибки:

var node = SiteMaps.Current.CurrentNode;
node.Title = model.name;

Однако, если я закомментирую тег [Routing] на [HttpPost], фильтр не будет работать, но внук будет маршрутизирован, появится на моем хлебном крошке, и код узла будет успешно выполнен.

Кто-нибудь знает что происходит?

1 ответ

Я разработал это для тех, кто с такой же проблемой:

Я переупорядочил код в контроллере так, чтобы все именованные маршруты предшествовали любым сообщениям:

[Route("parent/child/{param}", Name = "child")]
[MvcSiteMapNode(Title = "Child", ParentKey = "parent", Key = "child", PreservedRouteParameters = "param")] 
public ActionResult child(int param)
{
    ..............
}

[Route("parent/child/grandchild/{param}/{name}")]
[MvcSiteMapNode(Title = "Grandchild", ParentKey = "child", Key="grandchild", PreservedRouteParameters = "param, name")]
public ActionResult grandchild(int param, string = name)
{
    ..............

    var node = SiteMaps.Current.CurrentNode;
    node.Title = model.name;

    ..............
}

[Route("parent/child/{param}/{filterparam1 ?}/{filterparam2 ?}")]
[HttpPost]
public ActionResult child(int param, int filterparam1 = 0, int filterparam2 = 0 )
{
    ..............
}
Другие вопросы по тегам