如何从JavaScript方法重定向到操作?

时间:2011-03-17 08:57:10

标签: c# javascript asp.net-mvc redirect

我有一个输入类型=“按钮”

<input type="button" name="DeleteJob" runat="server" value="Löschen" onclick="DeleteJob()" />

和JavaScript方法:

function DeleteJob() {

    if (confirm("Do you really want to delete selected job/s?"))
        return true;
    else
        return false;
}

我怎样才能返回true,重定向到Action DeleteJob?

[HttpGet]
public ActionResult DeleteJob(string selectedObject)
{
    return View();
}

8 个答案:

答案 0 :(得分:33)

重定向:

function DeleteJob() {
    if (confirm("Do you really want to delete selected job/s?"))
        window.location.href = "your/url";
    else
        return false;
}

答案 1 :(得分:32)

function DeleteJob() {
    if (confirm("Do you really want to delete selected job/s?"))
        window.location.href = "/{controller}/{action}/{params}";
    else
        return false;
}

答案 2 :(得分:14)

我希望我可以评论yojimbo87的回答来发布这个,但我还没有足够的声誉来发表评论。有人指出,这种相对路径仅适用于根:

        window.location.href = "/{controller}/{action}/{params}";

只是想确认您可以使用@ Url.Content提供绝对路径:

function DeleteJob() {
    if (confirm("Do you really want to delete selected job/s?"))
        window.location.href = '@Url.Content("~/{controller}/{action}/{params}")';
    else
        return false;
}

答案 3 :(得分:10)

也许最好使用DeleteJob url而不是按钮制作锚点?

<a href="<%=Url.Action("DeleteJob", "YourController", new {selectedObject="someObject"})%>" onclick="return DeleteJob()">Löschen</a>

并使用您已编写的javascript:

function DeleteJob() {

        if (confirm("Do you really want to delete selected job/s?"))
            return true;
        else
            return false;
    }

因此,如果函数返回true,您将被重定向。如果函数返回false,您仍然会停留在页面上。

答案 4 :(得分:6)

使用@ Url.Action方法。无论您部署到哪个IIS服务器,这都将起作用并确定正确的路由。

例 - window.location.href =“@ Url.Action(”Action“,”Controller“)”;

所以在Home控制器上的Index操作的情况下 - window.location.href =“@ Url.Action(”Index“,”Home“)”;

答案 5 :(得分:2)

我有点挣扎,因为我想使用Knockout将按钮绑定到click事件。这是我的按钮以及我视图模型中的相关功能。

<a class="btn btn-secondary showBusy" data-bind="click: back">Back to Dashboard</a>

var vm = function () {
...
    self.back = function() {
        window.location.href = '@Url.Action("LicenseDashboard", "Application")';
    }
}

答案 6 :(得分:1)

您可以向服务器发送Ajax请求,也可以将window.location用于该URL。

答案 7 :(得分:0)

(这更多是评论,但由于声誉低下,我无法评论,有人可能会觉得有用)

如果您位于 sth.com/product 中,并且想要重定向到 sth.com/product/index ,请使用

window.location.href = "index";

如果您要重定向到 sth.com/home

window.location.href = "/home";

,如果您想重定向到 sth.com/home/index

window.location.href = "/home/index";