控制器动作没有被击中

时间:2017-12-13 10:59:29

标签: c# asp.net-core

我有以下表单试图让用户登录:

<form method="post" asp-controller="Auth" asp-action="SignIn">
    <div class="form-group row">
        <div class="col">
            <input class="form-control" type="email" placeholder="Email" id="email-input" name="email">
        </div>
    </div>
    <div class="form-group row">
        <div class="col">
            <input class="form-control" type="password" placeholder="Password" id="password-input" name="password">
        </div>
    </div>
    <div class="form-group row">
        <div class="col">
            <button class="btn btn-success" type="submit" name="button" style="width: 100%;">Login</button>
        </div>
    </div>
</form>

正如您所看到的,表单使用名为Auth的Controller和名为SignIn的Controller上的操作。以下是Controller的示例:

public class AuthController : Controller
{
    public IActionResult Index()
    {
        return View(new SignInViewModel());
    }

    [HttpPost]
    public async Task<IActionResult> SignIn(SignInViewModel model)
    {
        if (ModelState.IsValid)
        {
            if (await _userService.ValidateCredentials(model.Email, model.Password, out var user))
            {
                await SignInUser(user.Email);
                return RedirectToAction("Index", "Home");
            }
        }
        return View(model);
    }
}

我在第if (ModelState.IsValid)行设置了一个断点,它永远不会被击中。当我单击登录按钮时,页面只会刷新。我真的不明白为什么当Controller和Action看起来没问题时,为什么这个断点没有被击中。

编辑:SignInViewModel

public class SignInViewModel
{
    [Required(ErrorMessage = "Please Enter an Email Address")]
    public string Email { get; set; }

    [Required(ErrorMessage = "Please Enter a Password")]
    public string Password { get; set; }
}
来自Chrome的

小部件:

enter image description here

1 个答案:

答案 0 :(得分:1)

所以我做了一个新项目试图复制这个问题,它对我来说非常合适。 我假设您还没有使用区域吗?如果您正在使用区域,请将此属性添加到控制器类:

[Route("AreaNameHere")]

虽然如果你能够进入索引页面,那么这不是问题。

您的断点有效吗?符号是否被加载?由于ModelState无效或细节无效,因此它可能会刷新,因此它返回相同的视图。您可以使用fiddler来查看它是否真的在提出请求。

编辑: 你有这条线&#34; @addTagHelper *,Microsoft.AspNetCore.Mvc.TagHelpers&#34;在_ViewImports.cshtml文件中?