我刚开始研究一个有几个领域的应用程序(基本网格主/细节类型系统..)我正在考虑利用 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/action1/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)
无论我尝试什么,参数都是空的,或者“找不到资源”
我知道控制器需要有一个相应的视图文件..但这不是这里的问题,问题是我试图理解路由..
所以我的问题..从根本上说,我对 MVC (4) 中的路由缺少什么?甚至一些像我这样的傻瓜能理解的好文章?
我的理解; 定义一条路线,并将其映射为“端点”..但是,我认为我不理解机器所做的假设..
无论如何,如果需要进一步解释/编辑,请告诉我..
提前致谢。