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

时间:2016-10-27 20:20:05

标签: asp.net-mvc asp.net-core

我正在.net核心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>

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

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

3 个答案:

答案 0 :(得分:1)

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

@Html.Hidden("returnUrl",@Request.QueryString)

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

答案 1 :(得分:1)

我知道已经过去了很多时间,但是我找到了解决此问题的更好的方法。

我在模型中添加了一个名为QueryString的参数作为字典字符串

在视图中以标签形式添加

因此,此时,该帖子在查询字符串<form asp-all-route-data="@Model.QueryString"中具有参数

答案 2 :(得分:0)

您的controller / PageModel方法必须包含您需要保留的所有参数。像这样:

public async Task<IActionResult> OnPostAsync(string returnUrl = null)