2010-07-27 1 views
2

У меня есть основные представления мастера/детали, отлично работающие с маршрутом ASP.NET MVC по умолчанию; Однако я хотел бы построить несколько URL-адресов, как это:ASP.NET MVC Маршрутизация для основных/подробных просмотров с помощью «Детских детей»

/Class/Details/5 -- General Detail view [Working] 

То, что я не уверен,

/Class/5/Details/Logs -- Detail View with Logs 
/Class/5/Details/Status -- Detail View with current Status 

(и я не привязан к этому формату URL, просто что-то примерно equalivent.) Другой способ поместить это, как это:

/{controller}/{id}/{controllerSpecificMaster}/{action}/ 

То, что я пытаюсь избежать, это загромождать мои представления \ каталога класса с кучей соображений, которые все в основном производные Подробный вид.

Я нахожусь на ASP.NET MVC 1 и .NET 3.5 SP1.

+0

Я почти с вами. Некоторые разъяснения, пожалуйста? Когда вы говорите «мастер», вы имеете в виду главную страницу? –

+0

Я думал, что это может быть «главная страница ребенка». то есть главной страницы для деталей моего объекта «Класс». Который имел бы на нем специальные данные, специфичные для деталей класса, позволяя мне включать дополнительные «страницы» для разделов разделов деталей, один из которых «регистрирует» один из них «статус» и т. Д. – Nate

ответ

1

Первое, что вам нужно спуститься, - это ваши маршруты. Возможно, вы уже сделали это, но в случае, если у вас нет, вот запись маршрута, который будет обрабатывать ваши собственные потребности маршрута:

routes.MapRoute("Master_Detail", 
       "{controller}/{id}/{controllerSpecificMaster}/{action}", 
       new { controller = "Class", 
         action = "Index", 
         id = UrlParameter.Optional, 
         controllerSpecificMaster = "Details" 
       }); 

Затем, в своих методах действий, где вы хотите использовать маршрут, указанный мастер страница, просто включите ключ маршрута в ваших аргументах методы, а затем передать его мнению:

public ActionResult Logs(int id, string controllerSpecificMaster) 
{ 
    //do something 

    //return view with master name as argument 
    return View("Logs", controllerSpecificMaster); 
} 

Если вам нужно сделать, это много, я бы предложил создать пользовательский вид двигатель и переопределить FindView() метод.

+0

Как мне получить маршрут, который вы указали, в «Журналы (..)», «ActionResult»? – Nate

+0

Предполагая, что ваш контроллер является 'MyController', id' 1', а master - 'Detail', url будет ~/MyController/1/Detail/Logs –

Смежные вопросы