2016-09-19 43 views
2

我已經使用this作爲我想要做的一個例子。重定向到頁面,但具體標籤

我有一個標籤頁。

在我的控制器中,我想重定向到一個頁面,但是該頁面上的特定選項卡。

現在,當我在該網頁上,並且將鼠標懸停在該選項卡中的鏈接是http://localhost:xxxxx/OInfoes/Details/2#phases

所以在我的控制我這樣做是爲了嘗試和重建相同的鏈接:

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

這給了我正確的鏈接,但它並沒有把我放在正確的標籤上。

我如何得到這個工作?

我對標籤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> 
+0

您正確生成的鏈接,所以有可能是該網頁,處理散時,你是一個網頁上,也就是當你將被重定向到該頁面與哈希上不同於改變了一些額外的邏輯它。你使用的是什麼JavaScript庫? –

+0

@AndrésNava-.NET我正在使用jQuery,但我沒有用jQuery做過任何事情..這些標籤已經由[Bootstrap](http://bootswatch.com/default/#navs)標記生成 –

+0

Take看看這個http://stackoverflow.com/a/33675057/40521 – Shyju

回答

4

你應該更新你的操作方法採取一個參數代表標籤中選擇。

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

當您返回重定向結果,名稱標籤發送的查詢字符串現在

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

文檔中的準備,使用ViewBag.ActiveTab價值的價值,從產生的jQuery選擇,並用它來致電.tab('show')

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

確保您的選項卡的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> 
+1

工作!謝謝! –