C# 在ASP.NET MVC上提交时将输入的文本保留在表单上(数据持久性、状态)
发布数据时是否有更简单的方法保存数据 问题:我在输入框HTML元素中输入一个文本,我知道该文本将无法通过验证,例如超过50个字符串,然后单击“提交”按钮(页面加载):验证显示 字段名必须是最大长度为50的字符串 。然后 HTML文本输入元素为“空” 模型(用户模型) 控制器(两种方法,一种用于get,另一种用于POST) 用户控制器C# 在ASP.NET MVC上提交时将输入的文本保留在表单上(数据持久性、状态),c#,asp.net-mvc,asp.net-mvc-5,C#,Asp.net Mvc,Asp.net Mvc 5,发布数据时是否有更简单的方法保存数据 问题:我在输入框HTML元素中输入一个文本,我知道该文本将无法通过验证,例如超过50个字符串,然后单击“提交”按钮(页面加载):验证显示 字段名必须是最大长度为50的字符串 。然后 HTML文本输入元素为“空” 模型(用户模型) 控制器(两种方法,一种用于get,另一种用于POST) 用户控制器 public Create() { return View(); } //edited per suggestion public Create(User
public Create()
{
return View();
}
//edited per suggestion
public Create(User user)
{
if (!ModelState.IsValid)
{
return View(user);
}
db.User.Add(user);
db.SaveChanges();
return View("Index");
}
创建视图
@Html.EditorFor(model => model.FirstName, new { htmlAttributes = new { @class = "form-control", @placeholder = "First name" } })
@Html.ValidationMessageFor(model => model.FirstName, "", new { @class = "text-danger" })
所有这些都是保持表单状态的正确方法,除了
[HttpPost]
public Create(User user)
{
if (!ModelState.IsValid)
{
return View(user);
}
db.User.Add(user);
db.SaveChanges();
return View("Index");
}
你好,史蒂文。谢谢你的提示。我做到了。但当我键入一个未通过验证的名称时。然后我点击提交按钮。的输入框变为空。如果在POST方法中放置断点,用户将维护所有属性值?您的所有文本框都在视图的表单中,对吗?是的,它在@using(Html.BeginForm())中。在post的断点处,它保留值,但当我继续时,它是空的。。。。只有在出现验证错误时才会发生这种情况(例如,我在名字上键入了50多个字符)。如果没有错误,它会将其保存在数据库中,然后它会保留表单输入的信息;您显示的代码工作正常,如果返回视图,文本框将显示用户输入的上一个值。如果它对您不起作用,那么是因为您没有显示代码,或者您有一个自定义的
EditorTemplate
。但是你是对的,编辑我只是在最后返回视图(用户)。
[HttpPost]
public Create(User user)
{
if (!ModelState.IsValid)
{
return View(user);
}
db.User.Add(user);
db.SaveChanges();
return View("Index");
}