asp.net-mvc - 找到多个与 URL 错误 MVC 5 匹配的控制器类型
问题描述
在我问一个问题之前,我应该这样说;所有路由都已按Route
属性添加到控制器中。它不是this或this的副本。因为在这种情况下将ID参数(整数类型)传递给了两个不同的函数。
有两个类和两个函数,它们都分离在不同的类中。导航此页面时HomeController.AppPage
和BlogController.Detail
功能冲突。localhost:11111/Blog/this-is-blog-title/1
我想运行第二个,如下所述。
在第二个中,Blog
段必须在路线的开始处保持稳定。我不想更改或删除。
感谢您的建议和帮助。
第一
public class HomeController : BaseController
[Route("{title}/{ID}")] // -> No problem with this
[Route("{title1}/{title2}/{ID}")] // -> Conflicting attribute
public ActionResult AppPage(int ID)
{
// Some Code
return View();
}
}
第二个
public class BlogController : BaseController
[Route("Blog/{title}/{ID}")] // -> Conflicting attribute
public ActionResult Detail(int ID)
{
// Some Code
return View();
}
}
解决方案
尝试将 order 参数添加到路由属性,以便 Blog 路由优先于 title1 路由
默认情况下,所有已定义路由的 Order 值为 0,并且路由从最低到最高处理
public class HomeController : BaseController
[Route("{title}/{ID}")] // -> No problem with this
[Route("{title1}/{title2}/{ID}", Order = 2)]
public ActionResult AppPage(int ID)
{
// Some Code
return View();
}
}
public class BlogController : BaseController
[Route("Blog/{title}/{ID}", Order = 1)]
public ActionResult Detail(int ID)
{
// Some Code
return View();
}
}
如果这不起作用,您可以在 RouteConfig.cs 文件中列出它们并在 title1 路由之前写入 Blog 路由
你可以阅读这篇文章了解更多信息
http://rion.io/2015/11/13/understanding-routing-precedence-in-asp-net-mvc/
推荐阅读
- youtube - YouTube Data API:请求无法完成,因为您已超出配额。Сan 我是否使用 YouTube 数据 API 制作应用程序?
- node.js - 如何让路由在共享托管空间上工作
- javascript - 如何根据 getElementByClassName 过滤数组
- pandas - 基于 df1 的列的查找值对应于 df2 中的匹配值(请先阅读正文)
- oracle - Oracle 19c 安装错误:[INS-08802] 无法实例化视图 ID 'QuickInstallUI' 引用的视图类
- python - Python 如何使用 HTTP 身份验证从 Luno.com 查询 API
- java - 使用共享表发送带有预览的链接
- c# - 如何实现一种算法来搜索 Lucene Index for Equities?
- python - 导入和分析多个 CSV 文件
- python - Pandas DataFrame groupby,同时转换和计数