我有以下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);} } }
答案 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
}