2015-08-05 2 views
0

У меня есть фильтр на вид, который работает на форме постбэка:MvcSiteMapNode нуль на постбэка

[Route("mypath/{param}/", Name = "myaction")] 
[MvcSiteMapNode(Title = "My Form", ParentKey = "myparentaction", 
       Key = "myaction", PreservedRouteParameters = "param")] 
public ActionResult myaction(string param) { 
    // code 
} 


[Route("mypath/{param1}/{param2?}/{param3?}/{param4?}/")] 
[HttpPost] 
public ActionResult myaction(string param1, string param2= "", int param3= 0, int param4= 0) 
{ 
    // code 
    var node = SiteMaps.Current.CurrentNode; 
    node.Title = param1; 
} 

На взгляд у меня есть форма с некоторыми выпадающих меню и скрытый для 4 Params:

@using (@Html.BeginForm("myaction", "mycontroller", FormMethod.Post, new { @class = "form-horizontal", @role = "form" })) 
{ 
    @Html.DropDownListFor(param2.... onchange = @"this.form.submit();" 
    @Html.DropDownListFor(param3.... onchange = @"this.form.submit();" 
    @Html.DropDownListFor(param4.... onchange = @"this.form.submit();" 
    @Html.HiddenFor(param1.... 
} 

Об изменении выпадающих списков он запускает обратную передачу. Когда я сначала делаю выбор, текущий узел равен нулю. Если я прокомментирую этот код узла, фильтр работает, но только один раз. Если я сделаю еще один выбор, это 404s.

ответ

0

Так что я решил это:

Причина, по которой не работает (кажется), потому что у меня есть PreservedRouteParameters = «PARAM»

В моей постбэка, что первый параметр называется param1.

Изменив имя первого параметра на то же, что и на сохраненном, все заработало, как ожидалось.

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