asp.net-mvc – 如何在没有其他操作匹配的情况下为我的控制器设
说我有以下路线:
routes.MapRoute("Default","{controller}/{action}/{id}",new { controller = "Home",action = "Index",id = "" }); 也让我的控制器有以下方法:Index(Int32 id)和Edit(Int32 id). 所以/ MyController / Index / 1是该路由的有效URL. / MyController / Edit / 1 但是,如果接收到正确映射到我的控制器而不是现有操作的URL,那么如何定义“默认操作”来执行,而不是让MVC框架抛出错误屏幕? 基本上,我希望URL / MyController / Preview / 1和/ MyController / Whatever / 1执行一个我在指定{action}令牌无法映射到控制器上的现有操作时提前指定的操作. 我看到Codeplex上的MvcContrib项目有一个属性,可以使它与ConventionController一起使用,但是现在我想使用纯MS ASP.NET MVC来保持这一点. 我也看到Fredrik提到了一个[ControllerAction(DefaultAction = true)]属性,但除了他的博客之外,我找不到它的任何地方(当我在我的控制器中尝试时,我的应用程序将不会编译). 解决方法
您现在可以执行以下操作.
protected override void HandleUnknownAction(string actionName) { //your code here. } 另一种方法是在默认路由上加上约束,因此它只匹配控制器上存在的方法.那么你可以有另一条路线: routes.MapRoute("default-action","{controller}/{actionName}/{id}",new {action="DefaultAction"}); 哪个映射到 public ActionResult DefaultAction(string actionName,string id) { //handle default action } 这让你得到你要找的结果. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- asp.net-mvc – 发送电子邮件是否属于应用程序的表示层或业
- asp.net-mvc – 未部署ASP.NET MVC3区域_ViewStart.cshtml
- asp.net-mvc – 如何在RouteTable MVC.Net中手动查找路由?
- 基于Asp.Net MVC动作的自定义授权
- 如何在ASP.NET MVC中手动设置用户的角色?
- asp.net-mvc – 在ASP.NET MVC中使用ASP.NET Web窗体UserCo
- 将单元测试添加到现有的asp.net Web表单应用程序
- 在asp.net mvc中的RedirectToAction用法
- asp.net – 由于无法检索用户的本地应用程序数据路径而无法
- asp.net – IIS 7禁用“需要SSL”
- asp.net – HttpUtility.UrlEncode和Application
- 在ASP.Net中使用Page_Load和Page_PreRender
- asp.net – 在为app_offline.htm提供特定URL时,将
- .net – 为什么HttpContext.Current.Handler为nu
- asp.net – .NET MVC应用程序中可重用性的单位是
- asp.net – 在本地主机上开发Facebook Connect J
- asp.net – 您何时会在Web自定义控件上使用Web用
- ASP.NET——验证控件
- 发布ASP.NET核心应用程序:命令“npm install”退
- asp.net – 网页中的电子签名[已关闭]