MVC5:从Controller打开URL

时间:2014-10-29 10:51:12

标签: asp.net-mvc-5

我知道如何将链接路由到控制器,我知道如何从视图中打开URL。但我不知道如何将两者结合起来。

我通常会在视图中保持打开URL逻辑,但我想在重定向之前设置一些变量,所以我正在寻找可以从控制器打开URL的东西。我想在重定向到URL之前设置一些会话变量。

所以这就是我想要的:

@Html.ActionLink("Click Me!", "HandleClick", "Controller", null, null)

在m控制器中:

public ActionResult HandleClick()
{
    // Set Session variables
    // Open a URL
}

我该怎么做?另外,还有其他更好的方法吗?

请注意,此处的网址不是路线,而是http://www.google.com

等外部主机

2 个答案:

答案 0 :(得分:0)

您可以使用ajax.actionlink和javascript

@Ajax.ActionLink("Click Me!", "HandleClick", "Controller", new AjaxOptions() { OnSuccess = "mySucess" });

    <script> 
        function mySuccess() {
            window.open('http://www.google.com/');
        }
    </scrip

答案 1 :(得分:0)

标记的答案对我不起作用。我是这样做的:

在视图中:

@Ajax.ActionLink("Click Me!", "HandleClick", new { url = "www.google.com" }, null, new { @target = "_blank" })

注意事项:

  • new {id = 1}:只是为了演示如果有参数,如何将参数传递给 HandleClick。你可以使用NULL,如果没有参数传递给你的动作
  • new { @target = "_blank" }:仅指定是否要在新标签页中打开链接

在控制器中:

public ActionResult HandleClick(string url)
{
    //TODO do any server-side operation
    return Redirect(url);
}

这将打开一个新标签,然后将新标签重定向到指定的 url。

无需使用 JavaScript。