ASP.NET MVC表单提交出现404错误:路由配置与教程不符的问题排查咨询
解决表单提交404错误的方案
你的问题根源在于表单的action属性使用了相对路径"form1",当页面处于/Home/Index路径下时,这个相对路径会被解析为根目录下的/form1,而非期望的/Home/form1——你的默认路由配置是完全正确的,问题出在表单路径的定义上。
这里有几种可靠的解决方法:
方法1:使用Url.Action生成正确路径(推荐)
ASP.NET MVC提供的Url.Action辅助方法,能根据路由配置自动生成对应控制器和Action的URL,彻底避免硬编码路径的潜在问题。修改你的form标签:
<form action="@Url.Action("form1", "Home")" method="post">
这个方法会自动根据你的路由规则生成/Home/form1的路径,哪怕后续路由配置或控制器名称发生变更,也不需要手动修改这里的路径。
方法2:使用绝对路径(硬编码)
如果你不想用辅助方法,也可以直接写完整的控制器+Action路径:
<form action="/Home/form1" method="post">
不过这种方式属于硬编码,后续如果控制器名称修改,你需要手动更新这个路径,灵活性不如第一种方法。
额外建议:规范Action方法命名
虽然不影响功能,但按照C#的命名规范,建议将你的Action方法名改为首字母大写的Form1,同时在Url.Action里对应调整为"Form1",让代码风格更统一:
[HttpPost] public ActionResult Form1(int txtId, string txtName, string chkAddon) { // 原有逻辑保持不变 }
对应的View里:
<form action="@Url.Action("Form1", "Home")" method="post">
这样修改后,表单提交时就会正确请求/Home/form1(或/Home/Form1),匹配到你HomeController里的Action方法,不会再出现404错误。
内容的提问来源于stack exchange,提问作者TyMac
相关产品推荐
相关产品推荐

