Я использую 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");
Как я могу исправить свою проблему?
Вы не можете использовать что-то вроде RedirectToAction
потому что у него нет возможности добавлять фрагмент URL-адреса. То, что вы можете сделать, это использовать что-то вроде Redirect
которое просто берет строку URL-адреса, а затем использовать вспомогательный URL-адрес для динамического создания URL-адреса действия для вас:
return Redirect(Url.Action("Index", "Material") + "#Package");
Другими словами, Url.Action
создаст для вас основной URL-адрес и вернет его в виде строки. Затем вы можете добавить фрагмент к этой строке перед окончательным перенаправлением.
Вы можете просто написать вызов Ajax для перехода к контроллеру, и в случае success
добавьте #tab
в параметр url. например, используйте это:
Вы захотите использовать
Метод переадресации
Redirect("www.sitename.com/material/index#Package");
или
string fragment = "Package";
Redirect("www.sitename.com/material/index#" + fragment);
#Package - это то, что называется идентификатором фрагмента, который сфокусирует ваш браузер на части страницы с идентификатором пакета.