2016-09-19 9 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 
} 

リダイレクトの結果を返す場合は、ViewBag.ActiveTab値の値を使用することから、jQueryのセレクタを生成し、にそれを使用し、準備ができて、ドキュメント内の

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

今名]タブでクエリ文字列を送信.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

がうまくいった!ありがとう! –

関連する問題