我在一个项目中使用MVC4,C#和visual studio ultimate 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 :(得分:8)
您无法使用RedirectToAction
之类的内容,因为它无法附加网址片段。您可以使用Redirect
之类的东西,只需要一个URL字符串,然后使用URL帮助器为您动态生成操作URL:
return Redirect(Url.Action("Index", "Material") + "#Package");
换句话说,Url.Action
将为您生成主URL并将其作为字符串返回。然后,您可以在最终重定向之前将片段附加到此字符串。
答案 1 :(得分:0)
您想要使用
重定向方法
Redirect("www.sitename.com/material/index#Package");
或
string fragment = "Package";
Redirect("www.sitename.com/material/index#" + fragment);
#Package就是所谓的片段标识符,它将您的浏览器集中在页面的一部分,其ID为包。
答案 2 :(得分:0)
您只需编写一个Ajax调用即可传递给控制器,如果是success
,则将#tab
附加到url参数。例如,使用这个: