model-view-controller - 我如何在 MVC 网格删除控制器中解决我的这个问题
问题描述
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 erroe exception”一样
你的意思是一个NullReferenceException
?这意味着null
您正在尝试使用某些东西,就好像它具有价值一样。
这是我的观点,错误出现在 foreach 循环中
那么这条线上的东西是null
?:
@foreach (StudentViewModel _EachStd in @Model.StudentList)
您试图在该行上取消引用的唯一内容是Model
. 所以它遵循的Model
是null
。您是否将模型传递给您的视图?
return View("Test");
不,你不是。您需要将模型传递给您的视图,以便在您的视图中使用该模型。
顺便说一句,从这个删除操作中返回一个视图可能不是首先要走的路。考虑用户现在将在 URL 上/Home/Delete
并将其作为页面查看。这很快就会让用户和您的代码感到困惑。
不要返回视图,尤其是没有模型的视图,而是将用户重定向到构建模型并显示视图的操作。在您的代码中,这可能很简单:
return RedirectToAction("Test");
推荐阅读
- php - 如何使文件只能由 PHP 访问?
- reactjs - 如何在 React 中使用 onClick 保存和删除 useState 中的值?
- c++ - 柯南...[关闭]
- javascript - 如何根据键入到输入字段(例如搜索栏)中的值来更改 HTML 中 div 元素的可见性?
- css - 如何通过另一个类扩展链中的顶级选择器
- kubernetes - 错误:(gcloud.beta.filestore.instances.create)解析错误 [instance]
- css - scss自定义mixin覆盖更改值不替换,但添加它
- flutter - Flutter 相当于 Xamarin Forms Element AutomationID
- typescript - 方法的单独公共/私人签名
- python - 使用 python 请求保存整个网页而不是基本 html 以进行抓取