asp.net-mvc-3 – 默认路由不起作用
为什么这不起作用?
路线: routes.MapRoute( "Summary","{controller}/{id}",new { controller = "Summary",action = "Default" } ); 控制器: public class SummaryController : Controller { public ActionResult Default(int id) { Summary summary = GetSummaryById(id); return View("Summary",summary); } } 网址: http://localhost:40353/Summary/107 错误: Server Error in '/' Application. The resource cannot be found. Description: HTTP 404. The resource you are looking for (or one of its dependencies) could have been removed,had its name changed,or is temporarily unavailable. Please review the following URL and make sure that it is spelled correctly. Requested URL: /Summary/107 Version Information: Microsoft .NET Framework Version:4.0.30319; ASP.NET Version:4.0.30319.225 更新: 让我用更聪明的问题更新问题.我怎么能同时拥有这两个? routes.MapRoute( "Home","{controller}",new { controller = "Home",action = "Default" } ); routes.MapRoute( "Summary",action = "Default" } ); 解决方法
路由如何工作(默认情况下)?
让我们回到默认路由,这有点像这样: routes.MapRoute( // Route name "Default",// URL with parameters "{controller}/{action}/{id}",// Parameter defaults new { controller = "Home",action = "Index",id = UrlParameter.Optional } ); 让我们试着理解这个是如何工作的. >如果访问/,它将调用Home控制器的Index操作;省略了可选的Id. 因此,该路由允许任何形式为/,/ C,/ C / A和/ C / A / 1的URL,其中C是控制器,A是动作.这是什么意思?这意味着您不必指定自己的路线. 因此,如果没有路由,您可以只拥有一个HomeController和一个SummaryController,并向最后一个名为Show的控制器添加一个动作. 然后/ Summary / Show / 1会调用SummaryController.Show(1) 如果我想为控制器设置更短的路径(/ Controller / Id)怎么办? 假设我们想要映射路由,使得/ Summary / 1调用SummaryController.Show(1). 这是正确的形式: routes.MapRoute( "Summary","Summary/{id}",action = "Show" } ); routes.MapRoute( "Default","{controller}/{action}/{id}",id = UrlParameter.Optional } ); 请注意,我们已将Home路由更改为默认路由.现在我们添加了一个Summary路由,我们告诉我们,Summary / {id}形式的URL将触发该路由.当它们执行时,它调用Summary控制器的Show操作并将id作为参数传递;这正是你想要的…… 另请注意,我们需要首先放置Summary路由,使其优先. 警告:您不希望为您创建的每个操作创建新路由.您也不希望所有操作都在同一个控制器中.如果其中一个是这种情况,请考虑重新考虑您的方法,以便您以后不会遇到问题…… (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- asp.net-mvc-3 – 将其他数据发送到Telerik MVC网格
- asp.net-web-api – 使用自定义授权测试异步Web api方法
- asp.net – 使用实体框架进行部署后数据库更改的最佳实践
- asp.net – 如果我将ValidateRequest设置为false,这不是很危
- asp.net-mvc – 确保对控制器中创建的对象进行IDisposable调
- asp.net – 压缩不起作用
- asp.net-mvc – 带有Expression Web 4的ASP.NET MVC(RAZOR)
- asp.net – 如何绑定gridview中数据表的复选框值
- Castle DynamicProxy基本用法(AOP)
- asp.net-mvc – ASP.NET MVC路由冲突 – 输入变量的null值
- asp.net-mvc-3 – 使用mvc3下拉列表进行jquery自
- asp.net – 当用户离开网站(ASPX)时,最后调用数据
- asp.net-mvc – datetime.parse用西班牙语进行游
- asp.net-mvc – 可以在ASP.NET MVC中停止表单的多
- asp.net – 用于验证的数据注释,至少一个必填字段
- 如何将ASP.NET母版页存储在公共库中?
- asp.net-core – 我的自定义ASP.Net 5 MVC 6 Tag
- asp.net-mvc – ASP.NET MVC本地化最佳实践?
- 母版页(Master Pages)
- asp.net-mvc – 授权失败时将用户重定向到特定视