验证输入文本框是否为空或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();
        }

如果我没有在任何字段中输入任何内容,只要我输入任何内容(即使是空格),它就会继续…

验证输入文本框是否为空或null c#

您可以使用数据注释来完成这一切。首先,我想提醒您,验证必须在服务器端和客户端同时进行。如果你只在服务器上做,那么你将有一个帖子来了解模型错误(这将消耗时间和带宽)。如果你只在客户端这样做,那么你就会对恶意帖子开放,或者你不会检测到验证错误,因为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... 
}

注意,你不需要(严格地)检查模型是否有效,如果你在数据库中有相同的约束,那么当试图插入新记录时,它会抛出异常。用户将得到一个不太有意义的错误消息(从他的角度来看),所以我建议总是做这个检查。