Как использовать RedirectToAction для перенаправления на позицию на странице?

1

Я использую MVC4, С# и визуальную студию в 2013 году в проекте.

Я перенаправляю пользователя на индексную страницу после отправки формы. Однако на этой веб-странице есть 2 вкладки, и я хочу перенаправить пользователя на вторую вкладку, а не на первую.

У меня есть контроллер, называемый Material, с действием Index, который отправляет пользователя в Index вид.

public ActionResult Index()
{
   return View();
} 

Этот вид состоит из двух частичных представлений, _Materials и _Packages.

@{
    ViewBag.Title = "Index";
}
<div class="tabbable">
    <ul class="nav nav-tabs">
        <li class="active"><a href="#Materials" data-toggle="tab">Materials</a></li>
        <li><a href="#Packages" data-toggle="tab">Packages</a></li>
    </ul>
    <div class="tab-content">
        <div class="tab-pane active" id="Materials">
            @Html.Action("Materials", "Material")
        </div>
        <div class="tab-pane" id="Packages">
            @Html.Action("Packages", "Package")
        </div>
    </div>
</div>

После выполнения ряда действий в другом разделе приложения я переадресую пользователя на страницу " /Material на вторую вкладку, но я понятия не имею, как это сделать!

В настоящее время я использую этот код, который всегда перенаправляется на первую вкладку:

return RedirectToAction("Index", "Material");

Как я могу исправить свою проблему?

  • 0
    Взгляните на stackoverflow.com/questions/6985068/how-can-i-redirect-to-a-url, вам также необходимо добавить хеш в конец URL ex. www.foobar.com/fizz#Packages
  • 0
    Как добавить символ # в URL? Кажется, он не может быть правильно экранирован: S
Показать ещё 1 комментарий
Теги:
redirect
asp.net-mvc-4
redirecttoaction

3 ответа

6
Лучший ответ

Вы не можете использовать что-то вроде RedirectToAction потому что у него нет возможности добавлять фрагмент URL-адреса. То, что вы можете сделать, это использовать что-то вроде Redirect которое просто берет строку URL-адреса, а затем использовать вспомогательный URL-адрес для динамического создания URL-адреса действия для вас:

return Redirect(Url.Action("Index", "Material") + "#Package");

Другими словами, Url.Action создаст для вас основной URL-адрес и вернет его в виде строки. Затем вы можете добавить фрагмент к этой строке перед окончательным перенаправлением.

0

Вы можете просто написать вызов Ajax для перехода к контроллеру, и в случае success добавьте #tab в параметр url. например, используйте это:

0

Вы захотите использовать

Метод переадресации

Redirect("www.sitename.com/material/index#Package");

или

string fragment = "Package";
Redirect("www.sitename.com/material/index#" + fragment);

#Package - это то, что называется идентификатором фрагмента, который сфокусирует ваш браузер на части страницы с идентификатором пакета.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню