【发布时间】:2014-05-27 13:32:42
【问题描述】:
我正在尝试制作一个注册表单,如果用户没有填写所有文本框输入,它会返回错误消息。
我现在拥有的是
@using (Html.BeginForm("Register", "Main", FormMethod.Post))
{
@Html.TextBoxFor(r => r.FirstName)
@Html.TextBoxFor(r => r.LastName)
@Html.PasswordFor(r => r.Password)
@Html.PasswordFor(r => r.Password2)
@Html.TextBoxFor(r => r.Email)
@Html.TextBoxFor(r => r.Phone)
<input type="submit" value="Continue"/>
}
这些是我要检查它们是否为空或为空的字段
在我的控制器中,我做了一个 if 语句来检查电子邮件是否已被使用并返回错误消息,但我不想为每个字段都做一个 if 语句,这听起来不对。
[HttpPost]
public ActionResult Register(Registration signingUp)
{
var db = new SolutiondbEntities();
var FindEmail = db.tblProfiles.FirstOrDefault(e => e.PROF_Email == signingUp.Email);
if (FindEmail == null)
{
var Data = db.tblProfiles.Create();
Data.PROF_FirstName = signingUp.FirstName;
Data.PROF_LastName = signingUp.LastName;
Data.PROF_Password = signingUp.Password;
Data.PROF_Email = signingUp.Email;
Data.PROF_CellNum = signingUp.Phone;
db.tblProfiles.Add(Data);
int Saved = db.SaveChanges();
if (Saved != 0)
{
Response.Write("Saved");
}
else
{
Response.Write("Something went wrong!");
}
}
else
{
Response.Write("Theres already an user with that Email");
}
return View();
}
我想知道如何检查表单上的每个字段是否为空,以便我可以返回一个错误,告诉用户填写所有空白或字段。
谢谢!
编辑:
这是我的模型中的内容
public class Registration
{
public string FirstName { get; set; }
public string LastName { get; set; }
[DataType(DataType.Password)]
public string Password { get; set; }
public string Password2 { get; set; }
public string Email { get; set; }
public string Phone { get; set; }
}
EDIT2:
我已经添加了这行代码,它似乎有效但不准确,因为如果任何字段不为空,它将继续注册
foreach (string key in Request.Form.Keys)
{
if (Request.Form[key] == "")
{
Response.Write("Please, fill in all the fields");
}
else
{
Response.Write("Thanks for registering.");
}
return View();
}
如果我不在任何字段中输入任何内容,这将有效,只要我输入任何内容(甚至是空格),它就会继续..
【问题讨论】:
-
在您的模型 (
Registration) 上使用数据注释(在本例中为RequiredAttribute),框架会为您执行此操作(通过客户端验证)。 -
@AdrianoRepetti 你能给我举个例子吗,我已经编辑了问题并添加了我的模型,我是 c# 的新手
-
当您说 [DataType(DataType.Password)] 时,您所拥有的是数据注释。您可以为每个需要的字段添加 [Required()] 数据注释(即不能为 null 或空字符串)。
-
@AnneSchuessler 即使将 [Required(ErrorMessage="Error")] 添加到模型中每个公共字符串的顶部,我仍然能够继续注册。我必须在控制器中添加其他任何东西吗?我是 C# 新手,还在学习初学者的东西
-
确保你先用javascript检查这些东西(那里有很多例子)。它可以节省您在每次用户尝试输入输入时将数据发送到服务器并返回,从而使您的服务器上的事情变得更快、更容易。
标签: c# asp.net asp.net-mvc forms