Перенаправление на хэш из контроллера с помощью "RedirectToAction"

Здравствуйте, я хочу вернуть якорь из Mvc Controller

Контроллер name= 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?

Ответ 1

Я нашел этот способ:

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

Ответ 2

Великий ответ gdoron. Здесь другой способ, который я использую (просто для добавления к доступным решениям здесь).

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

Очевидно, что с ответом gdoron в этом простом случае можно сделать чище со следующим:

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

Ответ 3

Чтобы развернуть ответ Squall: использование строковой интерполяции делает для более чистого кода. Он также работает для действий на разных контроллерах.

return Redirect($"{Url.RouteUrl(new { controller = "MyController", action = "Index" })}#anchor");