asp.net-mvc-5 – MVC AttributeRoute似乎忽略了RoutePrefix并导
我正在使用MVC属性路由(MVC 5.1.2)并遇到错误:
这只发生在我去/ Admin / Sections /并且我不确定为什么因为只有一条路线可以匹配该URL,任何人都可以帮我弄清楚什么是错的?请注意这个问题是5.1.2独有的,MVC 5.0工作正常. 基础控制器: [RouteArea("Admin")] public class BaseController : Controller { } 家庭控制器: [RoutePrefix("")] [Route("{action}")] public class HomeController : BaseController { public ActionResult Index() { } public ActionResult Updates() { } [ChildActionOnly] public PartialViewResult GetUpdatesGrid() { } public ActionResult GetUpdates(JqGridRequest Request) { } } 部门控制器: [RoutePrefix("Sections")] [Route("{action}")] public class SectionController : BaseController { [Route] public ActionResult Sections() { } [ChildActionOnly] public PartialViewResult GetSectionsGrid() { } public ActionResult GetSections(JqGridRequest Request) { } public ActionResult AddSection() { } [HttpPost,ValidateAntiForgeryToken] public ActionResult AddSection(AddEditSectionVM model,HttpPostedFileBase LogoFile) { } public ActionResult EditSection(Int16? ID) { } [HttpPost,ValidateAntiForgeryToken] public ActionResult EditSection(AddEditSectionVM model,HttpPostedFileBase Logo) { } public ActionResult Releases() { } [ChildActionOnly] public PartialViewResult GetReleasesGrid() { } public ActionResult GetReleases(JqGridRequest Request) { } public ActionResult AddRelease() { } [HttpPost,ValidateAntiForgeryToken] public ActionResult AddRelease(AddEditReleaseVM model) { } } 我对RouteArea RoutePrefix和Route属性的理解告诉我/ Admin / Index将调用Home Controller的Index ActionResult,URL Admin / Sections应该调用Sections Controller的Index ActionResult.所有其他路线在每个控制器中都能正常工作,当您进入/ Admin / Index工作正常时.当我进入/ Admin / Sections时,我只收到此错误.怎么了? 解决方法
这似乎是ASP.Net MVC 5.1中与属性路由如何处理潜在的模糊匹配相关的重大变化的副作用:
http://www.asp.net/mvc/overview/releases/mvc51-release-notes 从5.0更新到当前的5.1.2时,我们遇到了类似的问题.看起来像这样的嵌套路线恰好是基于旧的逻辑工作,现在它们由于严格的改变而失败. 在您的示例中,/ Admin / Index在技术上可以匹配HomeController,因为它可以解释为/ {area = Admin} / {action = Index}.看起来似乎没有任何特殊逻辑(或者至少似乎没有),以查看{action}段是否恰好匹配同一区域中备用控制器上的已定义RoutePrefix. 这似乎使得这样的嵌套路由不再可能,因为你必须在HomeController中添加一个定义的RoutePrefix,如“Home”,以区分控制器路由匹配.也许这可以通过RouteConstraint或其他机制解决,但我还没有找到解决方案. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- 我想学习ASP.Net 2.0 / 3.5 / 4.0我应该从ASP.Net 2.0开始,
- 不能在此路径中使用此配置节。如果在父级别上锁定了该节,便
- asp.net-mvc – ASP.NET MVC – RequireJS最佳的多页面应用
- asp.net-mvc – NHibernate缓存问题 – 何时调用Evict?
- asp.net-mvc – 带有淘汰赛的EditorFor HTML Helper
- asp.net-mvc – 帮助/提示提高我的ASP.NET MVC 2网站的性能
- Asp.net,在哪里存储登录用户的用户名?
- 如何在ASP.NET MVC应用程序中组织JavaScript代码
- asp.net-mvc – 如果使用LINQ to SQL,还有什么理由学习SQL查
- asp.net-mvc – 如何将SaSS用于ASP.NET MVC应用程序?
- 深入理解Asp.Net中WebForm的生命周期
- asp.net-mvc – 使JSON.NET和Serializable属性一
- asp-classic – XP经典ASP上的IIS 5.1似乎处于单
- asp.net-mvc-3 – 是否可以嵌套部分视图?
- asp.net-mvc – 使用sqlserver express时不创建数
- asp.net-mvc – System.Web.Optimization和Micro
- asp.net – 尝试通过方法’HttpConfiguration..c
- asp.net-mvc – 在Azure上预热经过身份验证的应用
- asp.net-mvc – 获取当前用户的角色
- asp.net-mvc – 如何阻止用户在MVC3应用程序上登