web-dev-qa-db-ja.com

ASP.Net Core MVCの前のページに戻る

クライアントの詳細ページから、クライアントレコードを編集するボタンがあり、編集ページにリダイレクトします。編集ページに「クライアントの詳細に戻る」リンクがあり、前のクライアントの詳細ページにユーザーをリダイレクトしたい。

<a asp-controller="Client" asp-action="Detail" asp-route-id="@Model.ClientID">Return to client detail</a>

現在、これは期待どおりに機能しますが、詳細ページを最初から再読み込みする(つまり、さまざまなdbクエリをすべて再度実行する)ため、余分な時間がかかります。ユーザーは実際にはクライアントの状態を変更せずに編集をキャンセルするだけなので、コントローラーアクションを再度実行する必要なく、ユーザーを前の詳細ページに戻したいと考えています。

基本的に、ブラウザの[戻る]ボタンをシミュレートしたい(応答性を向上させる)が、これを実装する方法や、それを実行するのが良い方法かどうかわかりません。いくつかのガイダンスをいただければ幸いです。

ありがとう

9
OjM

使用できます

<a href='javascript:history.go(-1)'>Return to client detail</a>

またはonclick

<a href="##" onClick="history.go(-1); return false;"> Return to client detail</a> 
10

わかってる?私はJSが嫌いなので、バックエンド側で答えを書きます。 HTTPリファラーは、要求されているリソースにリンクされているWebページのアドレスを識別するHTTPヘッダーフィールドです。だからそれを読んでビューに渡すだけです(XSSと検証については常に覚えておいてください。ユーザーは簡単に spoof HTTPリクエストを実行できます)。

アクションコントローラー

if(Request.Headers["Referer"] != null)
{
    ViewData["Reffer"] = Request.Headers["Referer"].ToString();
}

表示中(かみそり)

@if(!string.IsNullOrWhiteSpace(ViewData["Reffer"]))
{
    <a href="@ViewData["Reffer"]">Return to client detail</a>
}
9
J. Doe

こんな感じ

<input type="button" onclick= "history.go(-1)" value="Return to client detail" />
1
Zahid Mustafa

IActionResaultの場合、このコードを使用できます

public IActionResult Test()
{
    return Redirect(Request.Headers["Referer"].ToString());
}
1
Diako Hasani

コントローラを通過するという考えを取り除く必要があると思います。あなたがASPネットコアコードでhrefについて最も速く閲覧する必要がある場合は、これを試すことができます。

 <a asp-area="" onclick="history.go(-1);">Return to client detail</a>
0
touinta