2011-03-24 90 views
2

我有詳細的課程視圖。在這個觀點上,我有很多信息,所以我把它分解成很好的JQuery UI Tabs部分,一切都很好......除了...MVC和JQuery UI選項卡 - 如何鎖定各種操作的選項卡?

某些選項卡上有表單。例如,在我提交任何表單後,上傳課程材料,添加任務,編輯名單等,我想在我的控制器上執行操作,然後再次重定向到詳細信息視圖,只有這一次我想成爲錨定到我提交之前我正在使用的選項卡上。根據Tabs文檔,它就像在網址末尾添加#tabs-4或#tabs-n一樣簡單,但我不知道如何告訴我的控制器如何做到這一點...

所以,如果我的窗體的控制器的動作之一是(簡體)

public ActionResult CreateTask(Task task) 
{ 
    db.Add(task); 
    db.Save(); 
    //I want to go to /details/id + #tabs-4. How? 
    return RedirectToAction("Details", new { id = task.CourseID }); 
} 

,然後細節(簡體)

public ActionResult Details(int id) 
    { 
     Course course = db.GetCourse(id); 

     // How do I tell the view to open #tabs-4 or 3 or 2?? 
     return View(course); 
    } 

此外,我想有一個重定向到同一信息查看其它方法,而是給它一個#tabs-3,#tabs-2等,所以我假設我必須在第一個方法中設置它,並將其傳遞給細節操作。

回答

2
var url = Url.RouteUrl(new { action = "Details", id = task.CourseID }); 
return Redirect(url + "#tabs-4"); 
1

您可以使用UrlHelper.GenerateUr l方法,傳遞您的錨點爲fragment

我會將一個擴展方法添加到UrlHelper以包裝呼叫GenerateUrl,因爲它需要10個參數,並且您不需要在所有情況下手動提供所有這些參數。