2014-11-03 92 views
1

我在项目中使用MVC4,C#和visual studio ultimate 2013。如何使用RedirectToAction重定向到页面中的位置?

我在提交表单后将用户重定向到索引页面。但是,该网页有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

看看http://stackoverflow.com/questions/6985068/how-can-i-redirect-to-a-url你还需要添加一个哈希到URL前端。 www.foobar.com/fizz#Packages – 2014-11-03 16:42:46

+0

如何向URL添加#字符?它似乎没有正确逃脱:S – 2014-11-03 16:57:30

+0

另外,我不明白如何解决我的问题=( – 2014-11-03 17:18:09

回答

5

您不能使用类似RedirectToAction之类的东西,因为它没有任何附加URL片段的功能。你可以做的是使用类似Redirect它只是需要一个URL字符串,然后使用URL帮手还是动态生成您的行动网址:

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

换句话说,Url.Action将产生主URL你将它作为一个字符串返回。然后,您可以在最终重定向之前将片段附加到该字符串。

0

你要使用

Redirect方法

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

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

的#Package就是所谓的片段标识符,这将专注于浏览器页面的一部分,其中包含Package的ID。

0

你可以简单地写Ajax调用传递给控制器​​,并在success情况下,追加#tab的URL参数。例如: