MVC和JQuery UI选项卡 - 如何从各种操作锚定到选项卡?

时间:2011-03-24 07:26:03

标签: asp.net-mvc jquery-ui controller anchor jquery-ui-tabs

我有课程的详细信息视图。在那个视图中,我有很多信息,所以我把它分解成了很好的JQuery UI Tabs部分,一切都很棒......除了......

有些标签上有表格。例如,上传课程材料,添加任务,编辑名单等...在我提交任何表格后,我想在我的控制器上执行操作,然后再次重定向到详细信息视图,这次我想成为在我提交之前锚定到我所在的选项卡上。根据Tabs文档,它就像在URL的末尾添加#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 个答案:

答案 0 :(得分:2)

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

答案 1 :(得分:1)

您可以使用UrlHelper.GenerateUr l方法,将锚点作为fragment传递。

我会向UrlHelper添加一个扩展方法来包含对GenerateUrl的调用,因为它需要10个参数,而且您不需要在所有情况下手动提供所有这些参数。