【问题标题】:Go to Action in Controller on click with parameters通过单击参数转到控制器中的操作
【发布时间】:2014-05-21 18:42:10
【问题描述】:

单击动态按钮时,我想转到控制器中的操作。

$(".myButton").click(function () {
    var var1 = "test1"
    var var2 = "test2"
    var var3 = "test3";

    location.href = '<%= Url.Action("Action","Controller") %>';
});

这很好,但是如果我尝试将变量添加到动作中,一切都会下坡。

【问题讨论】:

    标签: c# jquery asp.net-mvc-3


    【解决方案1】:

    您混淆了范围。无法将 client-side javascript 变量传递给 server-side 执行,因此您可以生成连接值的 url,例如:

    var var1 = "test1"
    var var2 = "test2"
    var var3 = "test3";
    
    location.href = '<%= Url.Action("Action", "Controller") %>?var1=' + var1 + '&var2=' + var2 + '&var3=' + var3;
    

    由于您在action 中有这些参数,它应该可以正常工作,例如:

    public ActionResult Action(string var1, string var2, string var3)
    {
       //....
    }
    

    【讨论】:

    • 我绝对是混淆了我的范围,这很好用。你现在是我的英雄。 - 明天早上我会标记为正确答案。
    【解决方案2】:

    您可以在生成 URL 时使用占位符值,然后使用 .replace()

    假设您的控制器为

    public ActionResult Action(string p1, string p2, string p3)
    {
    }
    

    JavaScript

    var var1 = "test1"
    var var2 = "test2"
    var var3 = "test3";
    
    var url = '<%= Url.Action("Action","Controller", new { p1 = -1, p2 = -2, p3=-3  }) %>';
    location.href = url.replace('-1',var1).replace('-2',var2).replace('-3',var3);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-12-15
      • 1970-01-01
      • 2019-08-13
      • 2018-09-30
      相关资源
      最近更新 更多