繁体   English   中英

将表单发布到其他控制器操作在MVC中不起作用

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM