web-dev-qa-db-ja.com

JavaScriptメソッドからアクションにリダイレクトする方法は?

入力type = "button"があります

<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を返し、アクションDeleteJobにリダイレクトするにはどうすればよいですか?

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

リダイレクトするには:

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

これを投稿するための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;
}
14
RJB

ボタンの代わりに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を返す場合-あなたはまだページにとどまります。

10
wassertim

@ Url.Actionメソッドを使用します。これは機能し、どのIISサーバーにデプロイするかに関係なく、正しいルートを決定します。

例-window.location.href = "@ Url.Action(" Action "、" Controller ")";

したがって、HomeコントローラーのIndexアクションの場合-window.location.href = "@ Url.Action(" Index "、" Home ")";

6
Chris M.

ノックアウトを使用してボタンをクリックイベントにバインドしたかったため、これに少し苦労しました。ここに、ビューモデル内からのボタンと関連機能を示します。

<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")';
    }
}
2
Jim Sims

Ajaxリクエストをサーバーに送信するか、そのURLにwindow.locationを使用できます。

1
Fourj

(これはコメントですが、評判が悪いためコメントできません。誰かが役に立つかもしれません)

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";
0
Krisi Suci