[英]Posting form to different controller action not working in MVC
我在RouteConfig.cs中定义了默认路由,如下所示:
public static void RegisterRoutes(RouteCollection routes)
{
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.MapRoute(
name: "Default",
url: "{action}/{id}",
defaults: new { controller = "BackEnd", action = "Index", id = UrlParameter.Optional }
);
}
后端控制器:
public class BackEndController : Controller
{
public ActionResult Index()
{
return View();
}
}
客户控制器:
public class AccountController : Controller
{
public ActionResult Index()
{
return View();
}
[HttpPost]
[ValidateAntiForgeryToken()]
public ActionResult LoginForm(Login item)
{
//Some code goes here...
return RedirectToAction("Index");
}
}
登录部分:
using (Html.BeginForm("LoginForm", "Account", FormMethod.Post))
{
@Html.AntiForgeryToken()
@Html.LabelFor(m => m.Username)
@Html.TextBoxFor(m => m.Username, new { placeholder = "Username" })
@Html.ValidationMessageFor(m => m.Username)
@Html.LabelFor(m => m.Password)
@Html.PasswordFor(m => m.Password, new { placeholder = "Password" })
@Html.ValidationMessageFor(m => m.Password)
<input type="submit" value="Login" />
}
我的表单未提交到控制器操作Account/Login
。
然后,您将不得不向该URL处理程序添加另一条路由。 但是,这违反了基于约定的路由的目的。
routes.MapRoute(
name: "Login",
url: "Login",
defaults: new { controller = "Account", action = "LoginForm" }
);
routes.MapRoute(
name: "Default",
url: "{action}/{id}",
defaults: new { controller = "BackEnd", action = "Index", id = UrlParameter.Optional }
);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.