如何检查输入值是否为空

本文关键字:是否 输入 何检查 检查 | 更新日期: 2023-09-27 18:22:27

我有以下Ajax Begin表单:-

@using (Ajax.BeginForm("AssignUsers", "SecurityGroup", 

    new AjaxOptions
{
    HttpMethod = "POST",
    InsertionMode = InsertionMode.Replace,
    UpdateTargetId = "UsersAssignment"//,
   // LoadingElementId = "progress",
   // OnSuccess = "reenable"
}))
{
    @Html.HiddenFor(Model => Model.GroupID)
    @Html.AntiForgeryToken()
<p>Search  <input  placeholder="Search by name.." name="selectedUserNames" type="text" data-autocomplete-source= "@Url.Action("AutoComplete", "SecurityGroup")" /> </p>
<input type="submit" value="Search" />
}

但问题是,用户没有在"测试输入"字段中输入任何值,然后会向数据库传递一个空的字符串。因此,我可以检查数组是否包含空字符串。

处理视图的操作方法是:-

[HttpPost]
        [ValidateAntiForgeryToken]
        public ActionResult AssignUsers(int GroupID, string[] selectedUserNames, string[] currentUserNames)
        { try
            {if (ModelState.IsValid)
               {repository.AssignUserGroup(GroupID, selectedUserNames, currentUserNames);
                    repository.Save();
                    if (!Request.IsAjaxRequest())
                    {
                        return RedirectToAction("Details", new { id = GroupID });
                    }
                    else if (Request.IsAjaxRequest())
                    {var ADUsers = repository.GetADUsers(null);
                        var group = repository.FindAllGroup(GroupID);
                        PopulateAssignedUsersData(group, ADUsers);
                        return PartialView("_Group", group);

存储库方法为:-

public void AssignUserGroup(int id, string[] selectedUsers, string[] currentusernames)
        {
            var usergroups = tms.UserGroups.Where(a=>a.GroupID == id);
            foreach (var ug in usergroups)
            {
                if (currentusernames != null)
                {for (int c = 0; c < currentusernames.Count(); c++)
                    {if (ug.UserName == currentusernames[c])
                        {tms.UserGroups.Remove(ug);
                        }}}}
                if( selectedUsers !=null){
               for (int i = 0; i < selectedUsers.Count(); i++)
               {UserGroup usergroup = new UserGroup();
                   usergroup.GroupID = id;
                   usergroup.UserName = selectedUsers[i];
                   tms.UserGroups.Add(usergroup);} } }

如何检查输入值是否为空

您可以这样做:

 if( string.IsNullOrWhiteSpace ( your string; for example : currentusernames[c] ) ) 
 {
    -- do something or throw an exception--
 }   
 else
 {
   -- do something else --
 }

您需要在某个时刻验证您的输入。这通常是对模型进行的,然后检查ModelState。但是,由于生成了复杂的属性,因此最好进一步验证程序中的输入。

更新存储库方法以验证提供给它的参数。

public void AssignUserGroup(int id, string[] selectedUsers, string[] currentusernames)
{
    if (id < 1) throw new ArgumentExpcetion("id");
    if (selectedUsers.Length == 0) throw new ArgumentException("selectedUsers");
    if (currentusernames.Length == 0) throw new ArgumentException("currentusernames");
    var usergroups = tms.UserGroups.Where(a=>a.GroupID == id);
    // May need to user .Count instead of .Length
    if (usergroups == null || usergroups.Length == 0) throw new ArgumentOutOfRangeException("id");
    foreach (var ug in usergroups)
    {
       if (currentusernames != null)
       {
          for (int c = 0; c < currentusernames.Count(); c++)
          {
              if (ug.UserName == currentusernames[c])
              {
                  tms.UserGroups.Remove(ug);
              }
          }
       }
    }
    if( selectedUsers !=null)
    {
       for (int i = 0; i < selectedUsers.Count(); i++)
       {
           UserGroup usergroup = new UserGroup();
           usergroup.GroupID = id;
           usergroup.UserName = selectedUsers[i];
               tms.UserGroups.Add(usergroup);
       }
    }
}

然后更新控制器以处理各种预期的异常。

try
{
   repository.AssignUserGroup(GroupID, selectedUserNames, currentUserNames);
} catch (Exception e)
{
   if (e is ArgumentException || e is ArgumentOutOfRangeException)
   {
       return redirect("Error");// Show an error view or message etc
   }
   throw; // Allow other exceptions to bubble
}