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 WebAPI中的异常过滤器传递内容?
- asp.net-mvc-5 – 使用MVC属性路由的每个控制器的多个Route
- 在ASP.NET(C#)中实现安全,独特的“一次性”激活URL
- asp.net-mvc – 使用ASP.NET身份重置密码时的令牌无效
- asp.net – MVC 5使用旧表单身份验证而不是OWIN
- asp.net-mvc – asp.net mvc排除来自搜索引擎抓取的动作
- asp.net – 如何跟踪Linq-to-sql DataContext上的查询
- 在ASP.Net中使用自定义RoleProvider时,如何允许多个角色查看
- 为什么我的ASP.NET项目不会在启动项目中运行在开发服务器上
- asp.net-mvc-3 – MVC3 AllowHtml属性的问题
- asp.net – 有没有办法禁用整个页面的事件验证?
- asp.net-mvc – 使用Ninject注册到自定义成员资格
- asp.net-mvc-4 – 升级到.NET 4.5和EF 5后,“启用
- ASP.NET webform的Bootstrap
- ASP.NET – UpdatePanel和JavaScript
- asp.net-mvc – ASP.NET MVC FileStreamResult不
- asp.net-mvc – MVC.net获取枚举显示名称而不必参
- asp.net – URL长度的最佳限制是什么? 100,200
- asp-classic – 在ASP Classic应用程序中获取根目
- ASP.NET关闭FriendlyURLs mobile.master页面
