Перенаправить на хеш из контроллера, используя «RedirectToAction»

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

Имя контроллера = 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?

 DevDave11 сент. 2013 г., 11:53

Ответы на вопрос(4)

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

Вышеуказанные урожаи/default/index#region, 3-й параметрfragment который он добавляет после #.

Документы Microsoft - ControllerBase

использование интерполяции строк делает код более чистым. Это также работает для действий на разных контроллерах.

return Redirect($"{Url.RouteUrl(new { controller = "MyController", action = "Index" })}#anchor");
Решение Вопроса

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

 hidden21 мая 2012 г., 23:32
Вы гениальный приятель! Вот что я закончил: return new RedirectResult (Url.Action (& quot; Index & quot; new {PKMvrEmployeeId = MvrId}) + & quot; # region & quot;);
 20 окт. 2017 г., 03:04
В MVC 5 при использовании RedirectToAction кажется, что экранирует # до% 23. Никто не испытывает это?
 15 дек. 2014 г., 03:52
Это самое чистое решение, которое я видел до сих пор. Спасибо гдорон
 08 авг. 2013 г., 04:55
+1 за использование RedirectResult вместо вызова метода Redirect (..). В выпуске MVC и IIS6 вы можете столкнуться с исключениями, вызванными перенаправлением, потому что запрос, возможно, уже перенаправлен, или часть дочернего действия, или содержимое уже отправлено.

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

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

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

return new RedirectResult(Url.Action("Index") + "#anchor_hash");
 16 дек. 2015 г., 21:14
Первый вариант работает хорошо, если ваше действие находится в другом контроллере.

Ваш ответ на вопрос