在c#asp.net中返回View()时保留表单数据

在c#asp.net中返回View()时保留表单数据,c#,asp.net,asp.net-mvc,razor,views,C#,Asp.net,Asp.net Mvc,Razor,Views,我很好奇,当返回视图时,如何将的值保留在表单中。假设我有一封电子邮件和密码,必须输入才能登录,用户输入了电子邮件,但没有输入密码。是否有任何方法,当我返回视图时,我可以将电子邮件保留在那里,以便用户只需输入密码 这是我的if声明: if (password == "") { ViewBag.SpanText = "You must enter a password."; return View(); } 这些是传入的值: public ActionResult Login(st

我很好奇,当返回视图时,如何将的值保留在表单中。假设我有一封电子邮件和密码,必须输入才能登录,用户输入了电子邮件,但没有输入密码。是否有任何方法,当我返回视图时,我可以将电子邮件保留在那里,以便用户只需输入密码

这是我的if声明:

if (password == "")
{
    ViewBag.SpanText = "You must enter a password.";
    return View();
}
这些是传入的值:

public ActionResult Login(string email, string password)
这是.cshtml:

 <div class="input-group">
 <input type="text" class="form-control" name="email" placeholder="Email">
 </div>

 <div class="input-group">
 <input type="password" class="form-control" name="password" placeholder="Password">
 </div>

您需要返回带有用户名和密码变量的视图。这样剃刀就可以把它复原了

if (password == "")
{
    ViewBag.SpanText = "You must enter a password.";
    return View(username, password);
}
更好的是,您可以创建一个带有用户名和密码字段的LoginViewModel,并使用该模型。然后可以使用DataAnnotations为密码字段设置密码规则


这样,当用户尝试使用空白密码登录时,页面将不会发布事件。验证规则将生效,它们将收到您想要的错误消息。

太棒了,谢谢您的额外建议。我非常感激!