Вкладки пользовательского интерфейса MVC и JQuery. Как привязать вкладки к различным действиям? - PullRequest
2 голосов
/ 24 марта 2011

У меня есть подробное представление для курсов. С этой точки зрения у меня много информации, поэтому я разбил ее на красивые разделы вкладок пользовательского интерфейса JQuery, и все отлично ... кроме ...

На некоторых вкладках есть формы. Например, загружать материалы курса, добавлять задачи, редактировать списки и т. Д. ... после того, как я отправлю любую из форм, я хочу выполнить действие на своем контроллере, а затем снова перенаправить в представление сведений, только на этот раз я хочу быть привязанный к вкладке, на которой я находился до отправки. Согласно документации по вкладкам, это так же просто, как добавить # tabs-4 или # tabs-n в конец URL, но я не уверен, как сказать моему контроллеру, как это сделать ...

поэтому, если одно из действий контроллера моей формы (упрощено)

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 ]

2 голосов
/ 24 марта 2011
var url = Url.RouteUrl(new { action = "Details", id = task.CourseID });
return Redirect(url + "#tabs-4");
1 голос
/ 24 марта 2011

Вы можете использовать UrlHelper.GenerateUr l метод, передавая свой якорь как fragment.

Я бы добавил метод расширения в UrlHelper для переноса вызова на GenerateUrl, так как он принимает 10 параметров, и вам не нужно указывать их все вручную во всех случаях.

...