验证输入文本框是否为空或null c#
本文关键字:null 是否 输入 文本 验证 | 更新日期: 2023-09-27 18:05:35
我试图使一个注册表单返回一个错误消息,如果用户没有填写所有的文本框输入。
我现在有的是
@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();
}
如果我没有在任何字段中输入任何内容,只要我输入任何内容(即使是空格),它就会继续…
您可以使用数据注释来完成这一切。首先,我想提醒您,验证必须在服务器端和客户端同时进行。如果你只在服务器上做,那么你将有一个帖子来了解模型错误(这将消耗时间和带宽)。如果你只在客户端这样做,那么你就会对恶意帖子开放,或者你不会检测到验证错误,因为JavaScript是禁用的。
怎么做?让我们首先选择模型并添加适当的注释:
public class Registration
{
[Required] public string FirstName { get; set; }
[Required] public string LastName { get; set; }
[DataType(DataType.Password), Required] public string Password { get; set; }
[Required] public string Password2 { get; set; }
[Required] public string Email { get; set; }
[Required] public string Phone { get; set; }
}
请注意您可能/应该添加所有可能的验证(密码匹配,电子邮件和电话号码正则表达式)。使用适当的注释(参见第一个链接)将允许您拥有更好的验证规则(例如,FirstName
必须至少有两个非空白字符,电子邮件必须是有效的地址,等等)。让我们看一个简单的例子(让我们检查MSDN关于单个属性的更多细节和更好的用法):
public class Registration
{
[Required, MinLength(2)]
public string FirstName { get; set; }
[Required, MinLength(2)]
public string LastName { get; set; }
[DataType(DataType.Password), Required]
public string Password { get; set; }
[Required, Compare("Password")]
public string Password2 { get; set; }
[Required, EMailAddress]
public string Email { get; set; }
[Required, Phone]
public string Phone { get; set; }
}
如果你启用了不显眼的JavaScript(和所需的HTML代码),那么它就是你所需要的客户端验证。
服务器端更容易,因为模型绑定器将为您做所有事情,您只需要检查模型是否有效:
[HttpPost]
public ActionResult Register(Registration signingUp)
{
if (!ModelState.IsValid)
return View(signingUp);
// Model is valid, work with it...
}
注意,你不需要(严格地)检查模型是否有效,如果你在数据库中有相同的约束,那么当试图插入新记录时,它会抛出异常。用户将得到一个不太有意义的错误消息(从他的角度来看),所以我建议总是做这个检查。