Controller:
public ActionResult Delete(int id)
{
Student _std = new Student();
var abc = _dbcon.StudentList.Where(c => c.Roll_ID.Equals(id)).SingleOrDefault();
_dbcon.StudentList.Remove(abc);
_dbcon.SaveChanges();
return View("Test");
}
This is my view and the error comes at foreach loop
View:
@foreach (StudentViewModel _EachStd in @Model.StudentList)
{
<tr>
<td> @_EachStd.Roll_ID</td>
<td> @_EachStd.Name</td>
<td> @_EachStd.Maths</td>
<td> @_EachStd.Urdu</td>
<td> @_EachStd.English</td>
<td>@_EachStd.ObtainNumber</td>
<td>@_EachStd.Percentage</td>
<td> @_EachStd.Grade</td>
<td>@Html.ActionLink("Edit", "Edit", "Home", new {id= @_EachStd.Roll_ID },null)</td>
<td>@Html.ActionLink("Delete", "Delete", "Home", new { id = @_EachStd.Roll_ID }, null)</td>
</tr>
}
</tbody>
</table>
我遇到了Null错误异常,但是刷新后我得到了记录删除。但是为什么会发生错误却没有得到它。每当我运行此代码时,我的Edit控制器就可以正常工作,而Delete控制器却不能正常工作,并且会发生错误,例如出现“ Null erroe异常”
答案 0 :(得分:0)
发生错误,就像出现“空错误例外”
您是说NullReferenceException
吗?这意味着您正在尝试使用null
,就好像它具有值一样。
这是我的观点,错误来自foreach循环
那么这行上的内容是null
?:
@foreach (StudentViewModel _EachStd in @Model.StudentList)
您要在该行上取消引用的唯一内容是Model
。因此,Model
是null
。您要将模型传递给视图吗?
return View("Test");
不,您不是。您需要将模型传递给视图,以便在视图中使用该模型。
顺便说一句,从此删除操作返回视图可能不是一开始的方法。考虑到用户现在将位于URL /Home/Delete
上并将其作为页面查看。这将很快使用户和您的代码感到困惑。
与其返回视图(尤其是不包含模型的视图),而是将用户重定向到构建模型并显示视图的操作。您的代码中哪一个可能很简单:
return RedirectToAction("Test");