(解决了,看看这个解决方案的结尾)
嗨,我想说我有那个网址:
http://mystite.com
然后,我使用HomeController
和Index
操作。
但是,如果网址看起来像
http://mystite.com/itemID
itemID
是字符串,可选,然后我使用MyController
和操作ViewContent
Global.asax文件:
routes.MapRoute(
"ViewItemContent",
"{itemID}",
new { controller = "My",
action = "ViewContent",
itemID = UrlParameter.Optional
}
);
问题是,当我使用第一个URL时,服务器会将其视为第二个URL(显而易见的)。那么,如果itemID
参数为NULL
,那么如何从HomeController
调用Index
的{{1}}操作?
我试过
MyController
但它总是将我重定向回return RedirectToAction("Index", "Home");
的{{1}}行动
我通过将RedirectToAction方法从MyController
的{{1}}操作移动到ViewContent
的{{1}}操作来解决了这个问题。
我尝试从MyController
- >重定向ViewContent
它没有用。
现在我从HomeController
- &gt;撤消了重定向。 <{1}}来自
Index
在这种情况下一切正常:)
答案 0 :(得分:0)
这是因为您没有正确配置路由。思考并了解路线的工作原理。如果你到另一条路线的路线非常相似,以及如何回到另一条路线,这可能会很棘手。顺序很重要。
也许您只是将"ViewItemContent"
路线放在另一条路线上方。由于RedirectToAction
,您的解决方案会对服务器进行另一次不必要的往返。
实际上你可以把另一条路线放在最上面:
routes.MapRoute(
"Home",
"",
new { controller = "Home",
action = "Index"
}
);
因此MVC将首先查找此内容,并且由于http://mystite.com
后面没有任何内容,因此“Home”路由将优先,并且它将直接使用Home
控制器和Index
操作。