在我的家庭控制器上,除了一个动作之外的所有操作都没有ID参数,对于没有ID参数的所有操作,我希望操作但不是控制器显示在URL中。对于一个动作,我不希望控制器或动作在URL中显示,只有该动作的ID参数,例如:
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div><input id="someInput" type="text" /></div>
<div id="someDiv">this should change color when input is focused</div>
但是,如果我首先放置OnlyCourse路线,则索引操作会通过它,如果我首先放置OnlyAction路线,则找不到OnlyCourse路线。如何让这些路线独立响应特定的行动?
编辑 -
因此,例如,仅课程(课程操作)的URL将是:
http://www.sitename.come/courseabbrev
,其他操作的URL将是
http://www.sitename.com/action
我现在尝试了以下内容:
routes.MapRoute(
"OnlyCourse",
"{courseabbrev}",
defaults: new { controller = "Home", action = "course", courseabbrev = UrlParameter.Optional }
);
routes.MapRoute(
"OnlyAction",
"{action}",
defaults: new { controller = "Home", action = "Index"}
);
routes.MapRoute(
name: "Default",
url: "{controller}/{action}/{courseabbrev}",
defaults: new { controller = "Home", action = "Index", courseabbrev = UrlParameter.Optional }
);
这就是索引操作的诀窍,但是任何其他操作仍然使用OnlyCourse路径。我尝试添加一个约束,但它似乎没有做太多,因为该路线会考虑除了索引之外的所有操作。
答案 0 :(得分:0)
它不会起作用,因为两个路线"{courseabbrev}"
和"{action}"
的模板都相似意味着如果您使用"{courseabbrev}"
它将忽略"{action}"
,因此您必须将其中一个路由到routes.MapRoute(
"OnlyCourse",
"courseabbrev/{courseabbrev}",
defaults: new { controller = "Home", action = "course"}
);
routes.MapRoute(
"OnlyAction",
"{action}",
defaults: new { controller = "Home", action = "Index" }
);
更具体这样
/courseabbrev
所以您的网址将是
http://www.sitename.come/courseabbrev/yourcourseabbrev
http://www.sitename.com/action
如果您希望路线为 routes.MapRoute(
"OnlyCourse",
"{courseabbrev}",
defaults: new { controller = "Home", action = "course" }
);
routes.MapRoute(
name: "Default",
url: "{controller}/{action}/{id}",
defaults: new {controller = "Home", action = "Index", id = UrlParameter.Optional}
);
,那么
li
现在您的网址将是