Asp.Net MVC5 – Html.Action – 属性路由 – 导致异常的奇怪行
以下是我整个网站中不同操作和视图的一些奇怪行为:
每当我POST一些动作方法并且Model.IsValid为false时,我都会返回视图.每当在返回的视图中调用Html.Action()时,我都会遇到以下异常: (System.Web.HttpException): No matching action was found on controller 'xyz'. This can happen when a controller uses RouteAttribute for routing,but no action on that controller matches the request. 我正在使用属性路由. public class RouteConfig { // REGISTER ROUTES public static void RegisterRoutes(RouteCollection routes) { routes.MapMvcAttributeRoutes(); } } 因此,即使Html.Action调用第一次在GET操作方法中返回View(),Html.Action总是在POST返回View()之后抛出此异常.这是我网站上的一般模式. 跆拳道?有什么想法在这里出了什么问题?我唯一能想到的是我随着时间的推移添加了更多的路线,现在它很困惑.如果是这样的话,我该如何修复或测试? 我刚想到我有很多路由/动作方法,其中动作方法的路径的get和post版本是相同的,除了action方法的GET或POST属性.我以前确定每条路线都是完全独特的,因为我得到了一些歧义,但是将其改回了相同的路线,用于获取和后置动作方法,唯一的区别是get或post属性……我变得确信它是路由问题,但我不知道具体是什么问题.我有数百种动作方法的路由属性. 我以前从未见过如此微妙的东西,甚至不知道如何开始解决这样的问题.我不知道它是简单还是复杂,如果它是我的代码或框架.任何帮助将不胜感激. 更新: 一些示例代码,不确定它会有所帮助,因为相同的事情发生在许多完全不同的动作方法和视图中的模式,无论GET,POST,授权,未授权,角色与否,反伪造… 从视图调用标准Html.Action.大多数时候工作正常. (不同的重载没有区别.) @Html.Action("CategoryDropDowns","Category") 这是被调用的内容(确切地说返回的内容没有区别,可能是ViewResult,可能是一个int). // GET: /category/category-drop-downs [HttpGet] [Route("category/category-drop-downs")] public ViewResult CategoryDropDowns() { } 如果验证失败,则返回视图: public ActionResult CreateListing(ListDetails listDetails) { if (ModelState.IsValid) { } else { return View("List",model); } } 在通过返回的视图进行调试时,第一次正常工作的Html.Action调用会抛出异常.同样的事情发生在我的网站上的模式.返回View(),点击Html.Action,爆炸,异常.每次. 解决方法
从子操作中删除[HttpGet]属性!
问题是Html.Action()似乎总是遇到异常而不是在GET之后,返回View(),而是POST,返回View(). 年龄之前,我浏览了整个网站并标记了每个不具有[HttpGet]属性的帖子的操作方法.我没有意识到这会导致问题.总是测试! 从Html.Action()调用的动作方法中删除[HttpGet]属性已经解决了这个问题. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- C# 文件复制帮助类
- asp.net – 无法加载文件或程序集“Microsoft.SqlServer.DT
- asp.net-mvc – MVC 4 _Layout.cshtml viewmodel
- asp.net-mvc – 使用401发送消息:Asp.net Web-api
- asp.net-mvc-3 – .NET MVC 3以编程方式设置布局
- asp.net – 如何为Umbraco创建项目包?
- 单元测试 – MVC3中的单元测试控制器会话变量
- asp.net – 我应该在我的HttpHandler中设置IsReusable为Tru
- asp.net-mvc – ASP.NET MVC Action被调用两次
- ASP.NET 4.0删除控件后菜单控件的渲染问题RenderingCompati
- asp.net – 进程服务应用程序池“经典.NET AppPo
- 缓存ASP.NET中的所有用户
- asp.net – 如何配置nginx以支持cloudflare下的s
- asp.net – aspnet的最大值:MaxHttpCollectionK
- asp.net mvc c#获取页面的url来自
- asp.net – 使用ClientId和ClientSecret进行Web
- asp.net-mvc – 用于MVC开发的Visual Studio 201
- razor – 如何定义在asp.net核心中返回html的函数
- ASP.NET Core Razor视图中的递归
- asp.net-mvc-4 – 无法从程序集’itextsharp,Ver