c# - 默认路由到索引以外的其他操作
问题描述
我已经搜索了很长时间,但是对于这种情况,我没有找到答案。
我的route.config中有一个HomeController
默认路由,如下所示:
routes.MapRoute(
name: "Default",
url: "{controller}/{action}/{id}",
defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
);
所以; http://localhost:36690/Home
自动调用Index
。
我也有一个方法MyController
(它是route.config中的自定义路由),Index
并且可以编写http://localhost:36690/My
并且可以工作。
但我想有一条没有任何Index
.
如果我要求localhost:36690/New
,它应该调用BASIC
。
所以我尝试了以下方法:
routes.MapRoute(
"New",
"{controller}/{action}",
new { controller = "New", action = "Basic" }
);
但它忽略了我的默认操作“基本”并引发错误:
“/”应用程序中的服务器错误。无法找到该资源。"
解决方案
您可以专门为该控制器添加另一条路由。
routes.MapRoute(
name: "New",
url: "New/{action}",
defaults: new { controller = "New", action = "Basic" }
);
routes.MapRoute(
name: "Default",
url: "{controller}/{action}/{id}",
defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
);
这样,当/New
被调用时,它将默认为NewController.Basic
推荐阅读
- django - 在管理员中上传图像时,出现错误:不允许文件扩展名 'jpg'。允许的扩展名是:''
- python - 从 pycharm 运行 dev_appserver.py 时出现 ImportError
- apache-spark - apache spark执行器和数据本地化
- php - 从php中的字符串中删除字母数字单词
- javascript - 使用猫鼬的对象引用
- php - Slim Framework如何在拦截器中按名称捕获路由参数
- c# - 在 Web API (.Net Framework) 中创建自定义 AuthorizeAttribute
- reactjs - 使用 redux,当状态树中的状态有效更改时,为什么 mapStateToProps() 没有在 props 中显示状态?
- javascript - 刷新页面和重定向到页面的区别
- angular - 如何在 Angular 5 中使用服务中的组件方法?