Asp.net mvc 3 .NET MVC3路由-为什么如此混乱?
我不知道为什么我一直在努力解决这个问题,但有人能解释一下为什么这不起作用吗Asp.net mvc 3 .NET MVC3路由-为什么如此混乱?,asp.net-mvc-3,url-routing,asp.net-mvc-routing,Asp.net Mvc 3,Url Routing,Asp.net Mvc Routing,我不知道为什么我一直在努力解决这个问题,但有人能解释一下为什么这不起作用吗 /重定向到主页控制器的索引操作 /gallery/抛出404未找到错误 /gallery/index重定向到gallery控制器的index操作 从: 定义管线时,可以为参数指定默认值。如果URL中未包含该参数的值,则使用默认值。通过将dictionary对象指定给route类的Defaults属性,可以设置路由的默认值 我不明白为什么这不符合规则: public static void RegisterRout
/
重定向到主页
控制器的索引
操作
/gallery/
抛出404未找到错误
/gallery/index
重定向到gallery
控制器的index
操作
从:
定义管线时,可以为参数指定默认值。如果URL中未包含该参数的值,则使用默认值。通过将dictionary对象指定给route类的Defaults属性,可以设置路由的默认值
我不明白为什么这不符合规则:
public static void RegisterRoutes(RouteCollection routes)
{
routes.MapRoute(
"Default",
"{controller}/{action}/{id}",
new { controller = "Home", action = "Index", id = UrlParameter.Optional }
);
}
对我来说,它是这样的:
- 如果未定义
,请使用控制器
Home
- 如果未定义
,请使用操作
索引
- 输入的URL包含一个控制器=
,并且URL中不包含一个操作,因此它应该转到gallery
索引
/Gallery/index
时,我的Gallery控制器、操作和视图都已定义并工作,以备有人询问时参考
public class GalleryController : Controller
{
public ActionResult Index()
{
return View();
}
}
你肯定是做错了什么,或者有些代码你还没有给我们看。执行以下步骤:
HomeController.cs
的内容替换为以下内容:
public class HomeController : Controller
{
public ActionResult Index()
{
return Content("home/index");
}
}
public class GalleryController : Controller
{
public ActionResult Index()
{
return Content("gallery/index");
}
}
requested url | result
-----------------+---------------
/ | home/index
/home | home/index
/home/ | home/index
/home/index | home/index
/home/index/ | home/index
/gallery | gallery/index
/gallery/ | gallery/index
/gallery/index | gallery/index
/gallery/index/ | gallery/index
正如预期的那样,不是吗?您肯定应该做错事,或者您没有向我们展示一些代码。执行以下步骤:
HomeController.cs
的内容替换为以下内容:
public class HomeController : Controller
{
public ActionResult Index()
{
return Content("home/index");
}
}
public class GalleryController : Controller
{
public ActionResult Index()
{
return Content("gallery/index");
}
}
requested url | result
-----------------+---------------
/ | home/index
/home | home/index
/home/ | home/index
/home/index | home/index
/home/index/ | home/index
/gallery | gallery/index
/gallery/ | gallery/index
/gallery/index | gallery/index
/gallery/index/ | gallery/index
正如所料,不是吗?问题是我有一个隐藏目录(不包括在我的解决方案中),它与我的错误路径同名:
/gallery
幸运的是,今天早上我太累了,打不动显示器
谢谢大家的建议,谢谢大家的指导
注:帮助我调查我使用的问题。问题是我有一个隐藏目录(不包括在我的解决方案中),该目录与我的错误路由同名:
/gallery
幸运的是,今天早上我太累了,打不动显示器
谢谢大家的建议,谢谢大家的指导
另外,为了帮助我调查我使用的问题。为了澄清,您只定义了这1条路线,默认路线?在此之前没有声明其他路线,并且您没有使用区域?您在所有方面都是正确的。您可能添加了另一个路由吗?没有,我特意发布了整个
RegisterRoutes
方法,以明确只有默认路由存在。这是哪个IIS在运行?内置VS2010虚拟服务器。为了澄清,您只定义了这1个路由,默认路由?在此之前没有声明其他路线,并且您没有使用区域?您在所有方面都是正确的。你可能添加了另一个路由了吗?没有,我特意发布了整个RegisterRoutes
方法,以明确只有默认路由存在。这是哪个IIS在运行?内置的VS2010虚拟服务器。事实上,正如你所演示的那样,我现在要做一个区分,看看有什么不同于我的其他应用程序(这是一个空项目类型)这是一个愚蠢的开发者时刻。为了对我问的问题有一个明确的答案,我现在回答我自己的问题。感谢你的澄清,Darin,希望我能在这种情况下给予更多的支持。事实上,你已经证明了这一点,现在我要做一个区分看看我的另一个应用程序有什么不同(它是一个空项目类型)。好吧,这正式成为那些愚蠢的开发人员时刻之一。为了对我问的特定问题有一个具体的答案,我在回答我自己的问题。感谢你的澄清,不过Darin,希望我能在这种情况下给予更多的支持。嘿,+1因为没有攻击你可怜的毫无防御能力的监视器:)
Heh,+1感谢你没有攻击你可怜的毫无防御能力的监视器:)