使用Html.BeginForm提交数据无法重定向至Action方法的问题求助
解决MVC中Html.BeginForm提交后无法重定向的问题
你遇到的问题核心是Html.BeginForm的控制器参数写法错误,这是MVC开发里非常常见的小误区,咱们一步步梳理解决:
1. 修正BeginForm的调用代码
你当前的代码是:
@using (Html.BeginForm("SubmitEmp","ClientController",FormMethod.Post))
这里的问题在于,MVC的Html.BeginForm方法中,控制器名称不需要加Controller后缀!正确的写法应该是:
@using (Html.BeginForm("SubmitEmp", "Client", FormMethod.Post))
框架会自动在你传入的名称后拼接Controller来查找对应的类,手动加后缀的话,框架会去找ClientControllerController这个不存在的类,自然无法正确提交到目标方法。
2. 确保控制器方法正确处理重定向
接下来检查你的ClientController里的SubmitEmp方法,必须返回正确的重定向结果才能跳转到目标视图。比如如果你的显示数据视图叫ShowEmp,方法应该类似这样:
[HttpPost] public ActionResult SubmitEmp(EmployeeModel model) { // 处理表单提交的数据,比如保存到数据库 // ... // 重定向到显示数据的视图对应的方法 return RedirectToAction("ShowEmp", model); // 若ShowEmp需要特定参数,也可以传递路由值 // return RedirectToAction("ShowEmp", new { id = model.Id }); } // 对应的显示数据方法 public ActionResult ShowEmp(EmployeeModel model) { // 准备视图所需数据 return View(model); }
注意:如果直接用return View("ShowEmp", model),虽然能显示视图,但浏览器地址栏仍停留在SubmitEmp的路径,不是真正的重定向,建议用RedirectToAction实现完整的重定向流程。
3. 确认视图文件夹结构
你的视图放在Client文件夹下,这符合MVC的约定(控制器名称对应视图文件夹),只要ShowEmp.cshtml在Views/Client目录下,就能被正确找到。
内容的提问来源于stack exchange,提问作者user9601917
相关产品推荐
相关产品推荐

