如何检查输入值是否为空

时间:2013-07-16 12:53:53

标签: c# asp.net-mvc

我有以下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" />
}

但问题是用户没有在“测试输入”字段中输入任何值,那么空的sting将被传递到数据库中。所以我怎么能检查数组是否包含空字符串。

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

[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);} } }

2 个答案:

答案 0 :(得分:1)

您可以这样做:

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

 else
 {
   -- do something else --
 }

答案 1 :(得分:0)

您需要在某个时候验证您的输入。这通常使用模型完成,然后检查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
}