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 )
{
..............
}