路线链接 - Url.Action
我试图返回我的链接,因此它们显示为/Area_1419.aspx/2/1。路线链接 - Url.Action
我已经设法在例子2中得到这个结果,但我不明白它为什么会起作用,因为我会看到下面的例子1工作。
我不明白例2知道如何去Area_1419控制器?
路线
routes.MapRoute(
"Area_1419 Section",
"Area_1419.aspx/{section_ID}/{course_ID}",
new { controller = "Home", action = "Index" }
);
捷径实施例1
<a href='<%=Url.Action("Area_1419",
new { section_ID="2", course_ID="1" })%>'><img .../></a>
返回:/Home.aspx/Area_1419?section_ID=2 & COURSE_ID = 1个
链接例2
<a href='<%=Url.Action("index",
new { section_ID="2", course_ID="1" })%>'><img .../></a>
返回:/Area_1419.aspx/2/1
记住 - 网址是从您的控制器和他们的行动分离。
这意味着甚至bizzare网址,例如“trolololo/nomnomnom/1/2/3”可能会也可能不会呼叫Home/Index
或任何其他控制器/操作组合。
在你的情况 - 例2实际上不知道如何去Area_1419控制器。
“Area_1419.aspx/{SECTION_ID}/{} COURSE_ID”
但仍链接会打电话回家控制器指数操作,因为:
Url.Action从这些路线的详细信息算出网址默认路由值:
新{控制器= “家”,行动= “索引”}
假设你有Area_1419控制器与指数的动作,你的路线应该是这样的:
routes.MapRoute(
"Area_1419 Section",
"Area_1419.aspx/{section_ID}/{course_ID}",
new { controller = "Area_1419", action = "Index" } //changes here
);
This is您所呼叫的内容。
UrlHelper.Action方法(String,对象)
通过使用指定的操作名称和路由值生成一个完全合格的URL到一个操作方法。
此方法重载不会试图找出适当的控制器。它假设你知道它(从当前路由值中取出),并将第一个字符串参数理解为一个动作名称。
尝试使用this one。
UrlHelper.Action方法(字符串,字符串,对象)
通过使用指定的操作的名称,控制器名称和路由值生成一个完全合格的URL到一个操作方法。
你的情况:
Url.Action("Index","Area_1419", new { section_ID="2", course_ID="1" });
您可以使用Url.RouteUrl()
,你的情况
Url.RouteUrl("Area_1419 Section", new { controller = "Home", action = "Index", section_ID="2", course_ID="1"}
,以确保您使用正确的路径名,并没有得到正确的URL -有什么关系。
我更新了路线,但链接仍然返回/Home.aspx/Area_1419?section_ID = 2&course_ID = 1 – Jemes 2010-03-15 12:27:20
@Jemes检查我的更新:) – 2010-03-15 12:48:14
非常感谢! – Jemes 2010-03-15 12:59:14