2014-11-03 2 views
1

Я использую MVC4, C# и визуальную студию в 2013 году в проекте.Как использовать RedirectToAction для перенаправления в позицию на странице?

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

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

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

Это View состоит из двух частичных Views, _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

Взгляните на http://stackoverflow.com/questions/6985068/how-can-i-redirect-to-a-url, вам также нужно добавить хэш в конец url ex. www.foobar.com/fizz#Packages –

+0

Как добавить символ # в URL? Кажется, что это не удалось избежать: S –

+0

Кроме того, я не вижу, как это решает мою проблему = ( –

ответ

5

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

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

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

0

Вы хотите использовать метод перенаправления

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

или

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

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

0

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

Смежные вопросы