我在视图上有一个过滤器,它适用于表单回发:
[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个参数隐藏的表格:
@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 :(得分:0)
所以我解决了这个问题:
它不工作的原因(相信)是因为我有一个PreservedRouteParameters =“param”
在我的回发中,第一个参数叫做param1。
通过将第一个参数名称更改为与保留的名称相同,一切都按预期开始工作。