gpt4 book ai didi

c# - asp.net MVC 验证出错时如何保留值?

转载 作者:太空狗 更新时间:2023-10-29 21:18:32 25 4
gpt4 key购买 nike

我注意到如果提交表单时出现错误,它会显示验证错误消息,这很酷。但是,它不会保留我输入的值。实际上,它们都消失了,更糟糕的是日期选择器也不起作用。所以,我不能再使用选择器了。所以,我的问题是:

  1. 如何保留我在验证前输入的值?
  2. 如果可能,有什么方法可以在发生验证错误后重用选择器控件?

最佳答案

假设您将表单值数据绑定(bind)到 View 模型,只需在验证失败时将 View 模型传递回 View 即可。让我们看一个例子:

View 模型:

public class ViewModel {
[Required]
public string UserName { get; set; }

[Required, DataType(DataTypes.Password)]
public string Password { get; set; }
}

Controller :

public class LoginController : Controller {
[HttpGet]
public ActionResult Login() {
return View();
}

[HttpPost]
public ActionResult Login(LoginViewModel model) {
if( ModelState.IsValid ) {
if( Membership.ValidateUser(model.UserName, model.Password) ) {
FormsAuthentication.SetAuthCookie(model.UserName, false);
return Redirect("~/");
}
}

// If we got this far, something went wrong.
// Pass the model back to the view.
return View(model);
}
}

View :

@Html.ValidationSummary()

using(@Html.BeginForm())
{
@Html.EditorForModel()
}

我们使用 HtmlHelper 方法编写 HTML 表单 BeginFormEditorForModel .我们可以使用 EditorFor(model => model.UserName)EditorFor(model => model.Password)以及。或者我们可以手动写出 HTML。重要的是 HTML 字段名称与我们的 View 模型类中的属性相匹配:

<input type="text" name="UserName" />

ASP.NET Mvc 将表单元素数据绑定(bind)到HttpPost 中的LoginViewModel。自动 Action 。只需将无效模型传回 View 即可填充字段。

关于c# - asp.net MVC 验证出错时如何保留值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11766506/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com