Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-mvc/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在ASP.NET MVC上提交时将输入的文本保留在表单上(数据持久性、状态)_C#_Asp.net Mvc_Asp.net Mvc 5 - Fatal编程技术网

C# 在ASP.NET MVC上提交时将输入的文本保留在表单上(数据持久性、状态)

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

发布数据时是否有更简单的方法保存数据

问题:我在输入框HTML元素中输入一个文本,我知道该文本将无法通过验证,例如超过50个字符串,然后单击“提交”按钮(页面加载):验证显示

字段名必须是最大长度为50的字符串

。然后

HTML文本输入元素为“空”

模型(用户模型)

控制器(两种方法,一种用于get,另一种用于POST)

用户控制器

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");

}