带有查询字符串参数的 asp.net core mvc 应用程序表单

You*_*suf 4 asp.net-mvc asp.net-core

我正在.net core mvc 中构建一个登录表单。下面是我的登录表单

<form class="c-form" asp-controller="Account"
  asp-action="Login">
<div class="form-group">
    @Html.TextBoxFor(m => m.Username, new { @class = "form-control c-input", placeholder = "Username" })
</div>

<div class="form-group">
    @Html.PasswordFor(m => m.Password, new { @class = "form-control c-input", placeholder = "Password" })
</div>
<div class="help-text help-text-error">
    @Html.ValidationMessage("UserNamePasswordInvalid")
</div>
<div class="">
    <button type="submit" class="btn-c btn-teal login-btn width100">Login</button>
</div>
Run Code Online (Sandbox Code Playgroud)

如果使用不正确的凭据发布表单,用户将停留在带有验证失败消息的页面上。

登录页面在查询字符串中也有返回 url,当表单发布时查询字符串参数丢失。在 .net core 中进行表单发布的正确方法是什么。

CSL*_*CSL 5

要在提交表单时保留查询字符串,请在包含查询字符串内容的表单中写入一个隐藏字段:

@Html.Hidden("returnUrl",@Request.QueryString)
Run Code Online (Sandbox Code Playgroud)

确保处理 post 请求的控制器操作有一个名为 returnUrl 的参数(或作为参数传递的模型具有该属性),并且模型绑定将负责将其传递给控制器​​。然后在控制器操作中,如果登录成功,则使用该数据进行相应的重定向。