c# - 更改 DropDownList 选项时使用参数重定向到 MVC ActionResult

标签 c# asp.net-mvc redirect razor

我正在使用 MVC 创建网站的一部分。在我的一个 View 中,我有一个 DropDownList。当一个新的下拉列表选项被选中时,或者换句话说 onchange,我希望我的页面被重定向到一个特定的 Controller ActionResult。如果没有参数,我可以访问 MyAction ActionResult,但是我不知道如何发送所需的参数。

我的 Controller 操作:

public virtual ActionResult MyAction(int param1, int param2)
{
    return View();
}

我在 View 中的 DropDownList:

@Html.DropDownList(
        "viewDataItem", Model.MyEnumerableList as SelectList, 
        new { onchange = @"
            var form = document.forms[0];
            form.action='MyAction';
            form.submit();" 
        } )

上面的代码调用了MyAction,但是它并没有传入参数。有没有办法以某种方式将参数添加到此代码中?

另一个想法是以某种方式使用 @{Response.Redirect(@Url.Action("MyAction", "myController", new { param1 = 2, param2= 3 }));} 作为自 Response.Redirect 以来我的 DropDownList 操作允许我使用参数重定向到 MyAction。有没有办法以某种方式使 onchanged = Response.Redirect?

尝试使 onchange 等于响应,但是当我更改选项时没有任何反应:

@Html.DropDownList(
        "name", Model.MyEnumerableList as SelectList,
        new
        {
            onchange = {Response.Redirect(@Url.Action("MyAction", "controllerName", new { param1 = 5, param2 = 3 }));}
        })

简而言之,每当我的 DropDownList 选项发生变化时,如何调用带参数的 ActionResult?

问过类似的问题herehere ,但这些链接中提供的答案都使用 JavaScript,我不知道如何将 JS 与 cshtml 一起使用。我尝试了其中一些答案,但没有一个能解决我的问题。

最佳答案

您可以在 onchange 事件上指定一个 javascript 函数并在该函数内:

var url = '@Html.Raw(Url.Action("MyAction", "controllerName", new { param1=5, param2=2 }))';

然后:

window.location = url;

最后的代码应该是:

@Html.DropDownList(
    "viewDataItem", Model.MyEnumerableList as SelectList, 
    new { onchange = "SelectionChanged()" 
    } )

<script>
 function SelectionChanged()
 {
  var url = '@Html.Raw(Url.Action("MyAction", "controllerName", new { param1=5, param2=2 }))';
  window.location = url;
 }
</script>

关于c# - 更改 DropDownList 选项时使用参数重定向到 MVC ActionResult,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31059917/

相关文章:

c# - LINQ where 子句中的 DateTime 属性错误

c# - 私有(private) TestInitialize 方法未初始化对象

c# - 双缓冲不减少闪烁

asp.net-mvc - 映射片段 Entity Framework 错误

javascript - 无法将字符串数组分配给 Bootstrap DateTimePicker 禁用日期

javascript - 如果脚本中未指定域,则重定向网站 - 使用 Javascript 进行保护

php - 从 pdf 重定向到 php

c# - 编译器在打开枚举后提示未分配的变量

javascript - 不显眼地提交 Ajax 表单两次

.htaccess - Magento 1.9 - 重定向太多