「RedirectToAction」を使用してコントローラからハッシュにリダイレクトします


87

こんにちはMvcコントローラーからアンカーを返したい

コントローラー名= DefaultController;

public ActionResult MyAction(int id)
{
        return RedirectToAction("Index", "region")
}

インデックスに向けられたときのURLが

http://localhost/Default/#region

そのため

<a href=#region>the content should be focus here</a>

次のようにできるかどうかは尋ねていません。URLにアンカータグを追加するにはどうすればよいですか。



回答:


133

私はこの方法を見つけました:

public ActionResult MyAction(int id)
{
    return new RedirectResult(Url.Action("Index") + "#region");
}

この冗長な方法を使用することもできます。

var url = UrlHelper.GenerateUrl(
    null,
    "Index",
    "DefaultController",
    null,
    null,
    "region",
    null,
    null,
    Url.RequestContext,
    false
);
return Redirect(url);

http://msdn.microsoft.com/en-us/library/ee703653.aspx


1
あなたは天才です!ここで私がやったことを返します:return new RedirectResult(Url.Action( "Index"、new {PKMvrEmployeeId = MvrId})+ "#region");
非表示

1
Redirect(..)メソッドを呼び出す代わりにRedirectResultを使用する場合は+1。リリース中のMVCとIIS6では、要求がおそらくリダイレ​​クトされているか、子アクションの一部であるか、コンテンツがすでに送信されているため、リダイレクトによって例外が発生する可能性があります。
Jaans 2013

2
MVC 5では、RedirectToActionを使用すると、#を%23にエスケープするように見えます。誰もこれを経験していませんか?
jakejgordon 2017年

私にとっては、同じ方法を使用すると再び回復します。
Zeeshan Ahmad Khalil

14

素晴らしい答えグドロン。これは私が使用する別の方法です(ここで利用可能なソリューションに追加するためだけです)。

return Redirect(String.Format("{0}#{1}", Url.RouteUrl(new { controller = "MyController", action = "Index" }), "anchor_hash");

明らかに、gdoronの答えがあれば、この単純なケースでは次のようにすることでこれをよりクリーンにすることができます。

return new RedirectResult(Url.Action("Index") + "#anchor_hash");

最初のオプションは、アクションが別のコントローラーである場合にうまく機能します。
Chad Hedgcock

9

ドットネットコアの簡単な方法

public IActionResult MyAction(int id)
{
    return RedirectToAction("Index", "default", "region");
}

上記は/ default / index#regionを生成します。3番目のパラメーターは、#の後に追加するフラグメントです。

Microsoftドキュメント-ControllerBase


4

スコールの答えを拡張するには:文字列補間を使用すると、コードがより簡潔になります。また、さまざまなコントローラーでのアクションにも使用できます。

return Redirect($"{Url.RouteUrl(new { controller = "MyController", action = "Index" })}#anchor");
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.