我是新手到MVC。我可以将MVC 5.2集成到我现有的Web窗体Visual Studio 2012 Update 4项目中。我创建了我的第一个控制器,并按预期工作。即使我能够在访问MVC视图时利用现有项目中的窗体身份验证。但是当创建我的第二个控制器时,它开始搞乱了。ASP.Net MVC @ Url.Action()路由到错误的控制器
这是我的路由映射:
public static class RouteConfig
{
public static void RegisterRoutes(RouteCollection routes)
{
routes.EnableFriendlyUrls();
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.MapRoute(
name: "Default",
url: "{controller}/{action}/{id}",
defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
);
}
}
我有两个控制器都位于〜/控制器。我的第一个控制器:
public class HomeController : Controller
{
//
// GET: /Home/
public ActionResult Index()
{
//return View();
return Redirect("~/Default.aspx");
}
public ActionResult CloseSession()
{
return Redirect("http://www.yahoo.com");
}
}
第二控制器:
public class CajaWebController : Controller
{
//
// GET: /CajaWeb/
public ActionResult Index()
{
return View();
}
public ActionResult CloseSession()
{
return Redirect("http://www.cnn.com");
}
}
我不知道是不是相关的问题,但我会包括如何达到MVC视图。我的VS2012开始网址是
http://localhost/Fortia/CajaWeb.
Fortia是我的应用程序名称。因为我宣布Web窗体身份验证和
<location path="CajaWeb">
<system.web>
<authorization>
<allow roles="Fortia" />
<deny users="*" />
</authorization>
</system.web>
</location>
开始调试旧的WebForms应用程序的认证机制时
叫,老WebForms的登录页面调用和行动被称为成功登录终于我CajaWebController,指数()之后。创建CajaWebController是谁被称为HomeController的,但我认为MVC现在推导出正确的控制器之前,是因为有针对性的网址是
http://localhost/Fortia/CajaWeb.
的调用视图包含以下代码的CajaWeb:
<a href='@Url.Action("CloseSession", "CajaWeb")'>Close session</a>
问题是,当点击生成的链接时,尽管我在@ Url.Action中明确地设置了CajaWebController.CloseSession(),MVC仍然调用HomeController.Index()动作...
我看着生成的链接,它看起来不对:
<a href='/Fortia/__FriendlyUrls_SwitchView?action=CloseSession&controller=CajaWeb'>
它编码的参数分隔符&为&但无论如何,我想handcoding在href作为
http://localhost/Fortia/__FriendlyUrls_SwitchView?action=CloseSession&controller=CajaWeb
,但结果是一样的。
出了什么问题?
[不要使用web.config来锁定MVC授权的路径,它很可能不会工作,并肯定会允许安全漏洞](http://stackoverflow.com/questions/11765030/how-tolock -down-paths-in-asp-net-mvc) – 2014-08-27 17:02:26
与论坛网站不同,我们不使用“谢谢”或“任何帮助表示赞赏”,或在[so]上签名。请参阅“[应该'嗨','谢谢',标语和致敬从帖子中删除?](http://meta.stackexchange.com/questions/2950/should-hi-thanks-taglines-and-salutations-be – 2014-08-27 17:02:30
也许你似乎用于WebForms的包[ASP.NET Friendly URLs](http://aspnetfriendlyurls.codeplex.com/)与MVC不能很好地兼容? – CodeCaster 2014-08-27 17:05:50