我有课程的详细信息视图。在那个视图中,我有很多信息,所以我把它分解成了很好的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等,所以我假设我必须在第一个中设置它方法,并将其传递给详细信息操作。
答案 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个参数,而且您不需要在所有情况下手动提供所有这些参数。