重定向到页面但特定选项卡

Gri*_*zly 3 c# asp.net-mvc tabs

我用这个作为我想要做的事情的一个例子.

我有一个标签页.

在我的控制器中,我想重定向到页面,但该页面上的特定选项卡.

现在,当我在该页面上时,将鼠标悬停在选项卡上,链接就是 http://localhost:xxxxx/OInfoes/Details/2#phases

所以在我的控制器中我这样做是为了尝试重新创建相同的链接:

return new RedirectResult(Url.Action("Details", "OInfoes", new { id = phase.OID }) + "#phases");
Run Code Online (Sandbox Code Playgroud)

这给了我正确的链接,但它没有把我放在正确的选项卡上.

我如何让它工作?

标签的我的HTML如下:

<ul class="nav nav-tabs">
    <li class="active"><a href="#oInfo" data-toggle="tab">Information</a></li>
    <li><a href="#reports" data-toggle="tab">Previous Reports</a></li>
    <li><a href="#phases" data-toggle="tab">Previous/Current Phases</a></li>
</ul>
Run Code Online (Sandbox Code Playgroud)

Shy*_*yju 5

您应该更新操作方法以获取参数来表示要选择的选项卡.

public ActionResult Details(int id,string tab="")
{
   if (id != null)
        ViewBag.ActiveTab = id.ToString();
   // to do : Return a view
}
Run Code Online (Sandbox Code Playgroud)

返回重定向结果时,发送带有名称选项卡的查询字符串

return new RedirectResult(Url.Action("Details", "OInfoes", new { id = phase.OID ,
                                                                           tab="phases"}));
Run Code Online (Sandbox Code Playgroud)

现在,在您的文档中,使用value的ViewBag.ActiveTab值,从中生成jQuery选择器并使用它来调用.tab('show').

$(function () {
    var selector = '@ViewBag.ActiveTab';
    if(selector)
    {
       $("#link-tab"+selector).tab('show');
    }        
});
Run Code Online (Sandbox Code Playgroud)

确保您的标签的ID与我们的上述代码相匹配.

<ul class="nav nav-tabs">
    <li class="active"><a href="#oInfo" id="link-info" data-toggle="tab">Info</a></li>
    <li><a href="#reports" id="link-reports" data-toggle="tab">Prev Reports</a></li>
    <li><a href="#phases" id="link-phases" data-toggle="tab">Prev/Cur Phases</a></li>
</ul>
Run Code Online (Sandbox Code Playgroud)