我如何在MVC网格删除控制器中解决此问题

时间:2019-02-28 12:46:17

标签: model-view-controller grid

 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异常”

1 个答案:

答案 0 :(得分:0)

  

发生错误,就像出现“空错误例外”

您是说NullReferenceException吗?这意味着您正在尝试使用null,就好像它具有值一样。

  

这是我的观点,错误来自foreach循环

那么这行上的内容是null?:

@foreach (StudentViewModel _EachStd in @Model.StudentList)

您要在该行上取消引用的唯一内容是Model。因此,Modelnull。您要将模型传递给视图吗?

return View("Test");

不,您不是。您需要将模型传递给视图,以便在视图中使用该模型。

顺便说一句,从此删除操作返回视图可能不是一开始的方法。考虑到用户现在将位于URL /Home/Delete上并将其作为页面查看。这将很快使用户和您的代码感到困惑。

与其返回视图(尤其是不包含模型的视图),而是将用户重定向到构建模型并显示视图的操作。您的代码中哪一个可能很简单:

return RedirectToAction("Test");