Настройка ASP.Net MVC 4 Routing с пользовательскими сегментными переменными
Я только начал работать над приложением с несколькими областями (основная система сетки / система типов деталей ..) Я пытаюсь воспользоваться преимуществами замечательных функций маршрутизации в MVC (особенно 4), и я "просто не понимаю" Я полагаю.
В настоящее время единственный определенный маршрут является основным:
routes.MapRoute("Default",
"{controller}/{action}/{id}",
new { controller = "Account", action = "Index", id = UrlParameter.Optional }
);
это нормально, он работает с областями, которые мы определили, поэтому я предполагаю, что он должен знать, где находится пользователь, и направить к соответствующему контроллеру в зависимости от местоположения / области, в которой находится пользователь.
Теперь я пытаюсь создать новый маршрут, который может обрабатывать
/someController/someAction/{statusName}
и конкретно что-то вроде:
/OrderManager/List/New
А ТАКЖЕ
/OrderManager/List/Viewed
где «Новый» - это «Новый» статус, и подпись действия выглядит следующим образом:
public ActionResult List(string statusName)
я предполагал, что мог бы просто добавить новый маршрут ниже маршрута по умолчанию, идентифицирующего «statusName» вместо Id, но, конечно, как механизм маршрутизации H узнает разницу между:
/ Controller1 / действие1 / 15
/ Controller2 / action2 / новый
Я попытался добавить «статический» маршрут в виде
routes.MapRoute("Default",
"ControllerName/ControllerAction/{statusName}",
new { statusName = UrlParameter.Optional }
);
Я думал, что смогу "hiJack" только этот один маршрут и сделать что-то особенное с ним, но чтобы понять, что это не так, маршрутизатор останавливается при первом совпадении Я предполагаю, что это был неправильный способ решить эту проблему в любом случае ..
так что теперь я иду через идею получить что-то вроде:
/somecustomroutename/somesortValue
ех. / OrderManagerList / viewNew
где эти маршруты будут в основном "псевдонимами". Я думал, что добавление следующего маршрута поможет.
routes.MapRoute("Default_List",
"OrderManagerList/{statusName}",
new {controller="OrderManager", action="List", statusName= UrlParameter.Optional }
);
с соответствующим действием на контроллере OrderManager:
public ActionResult List(string statusName)
независимо от того, что я пытаюсь, аргумент нулевой, или "ресурс не может быть найден"
Я знаю, что контроллеры должны иметь соответствующий файл View ... но это не проблема здесь, проблема заключается в моей попытке понять маршрутизацию ..
Так что мои вопросы .. по сути, что мне не хватает в маршрутизации в MVC (4)? даже несколько хороших статей для простого человека, как я, чтобы понять?
Мое понимание; определить маршрут и отобразить его «конечную точку» .. однако, я думаю, что я не понимаю предположения, которые делает машина ..
в любом случае, дайте мне знать, если требуется дальнейшее объяснение / редактирование ..
заранее спасибо.