我的asp.net mvc应用程序中有folloiwng动作方法: -
public ActionResult CustomersDetails(long[] SelectRight)
{
if (SelectRight == null)
{
ModelState.AddModelError("", "Unable to save changes. Try again, and if the problem persists see your system administrator.");
RedirectToAction("Index");
}
else
{
var selectedCustomers = new SelectedCustomers
{
Info = SelectRight.Select(GetAccount)
};
return View(selectedCustomers);
}
return View();
}
但是如果SelectRight Array
为空,那么它将绕过if (SelectRight == null)
检查,它将呈现CustomerDetails视图并在视图中的以下代码上引发异常
@foreach (var item in Model.Info) {
<tr>
那么如何才能使空检查工作正常?
答案 0 :(得分:7)
您必须返回 RedirectToAction(..)
的结果。
public ActionResult CustomersDetails(long[] SelectRight)
{
if (SelectRight == null)
{
ModelState.AddModelError("", "Unable to save changes. Try again, and if the problem persists see your system administrator.");
return RedirectToAction("Index");
}
else
{
'...
答案 1 :(得分:6)
您可以将条件更改为以下条件:
...
if (SelectRight == null || SelectRight.Length == 0)
...
这应该有所帮助。
修改强>
关于上面代码的重要注意事项是,在c#中,或者运算符||
是短路的。它看到数组为null(语句为true)并且不会尝试计算第二个语句(SelectRight.Length == 0
),因此不会抛出NPE。
答案 2 :(得分:4)
您可以检查它是否为空,并且长度不为零。
if (SelectRight == null || SelectRight.Length == 0) {
ModelState.AddModelError("", "Unable to save changes...");
return RedirectToAction("Index");
}
上面的if语句会捕获空值和空数组。