MVC 4 开机自检未命中控制器/操作



我在 MVC 4 中遇到了一个非常烦人的问题,我的表单帖子没有达到我指定的操作。我以前做过很多次,它工作得很好,但在我的新项目中它似乎根本不起作用。

这是一个简单的登录页面,没有什么花哨的,只有一个用户名和密码字段。这是我的代码

HTML/Razor:

@model XYZ.Models.PageModels.LoginPageModel
<div class="login">
    <form class="left form">
        @using (Html.BeginForm("Login", "Account", FormMethod.Post))
        {
            <div class="form-group form-group-sm">
                <label class="control-label" for="UserName">User Name</label>
                @Html.TextBoxFor(model => model.UserName, new {@class="form-control", @placeholder="User Name"})
            </div>
            <div class="form-group form-group-sm">
                <label class="control-label" for="Password">Password</label>
                @Html.PasswordFor(model => model.Password, new {@class="form-control", @placeholder="Password"})
            </div>
            <div class="buttons right">
                <input type="submit" class="btn btn-primary btn-sm" value="Login" />
            </div>
        }
    </form>
</div>

控制器:

public class AccountController : Controller
    {
        public ActionResult Login()
        {
            return View();
        }
        [HttpPost]
        public ActionResult Login(LoginPageModel model)
        {
            throw new Exception("I'm here!");
            return View();
        }
    }

路由配置:

routes.MapRoute(
                name: "Default",
                url: "{controller}/{action}/{id}",
                defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
            );

型:

public class LoginPageModel
    {
        [Required(ErrorMessage = "User Name required")]
        public string UserName { get; set; }
        [Required(ErrorMessage = "Password required")]
        public string Password { get; set; }
    }

有什么想法吗?谢谢!

标记中有嵌套表单。一个是你自己写的,另一个是从Html.BeginForm帮助程序方法生成的。摆脱外面的,你很好。

这应该可以正常工作。

<div class="login">
    @using (Html.BeginForm("Login", "Account"))
    {
        <div class="form-group form-group-sm">
            <label class="control-label" for="UserName">User Name</label>
            @Html.TextBoxFor(model => model.UserName, new { @class = "form-control", @placeholder = "User Name" })
        </div>

        <div class="form-group form-group-sm">
            <label class="control-label" for="Password">Password</label>
            @Html.PasswordFor(model => model.Password, new { @class = "form-control", @placeholder = "Password" })
        </div>

        <div class="buttons right">
            <input type="submit" class="btn btn-primary btn-sm" value="Login" />
        </div>
    }
</div>

最新更新