2014-11-03 90 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參數。例如: