0
我试图在每个操作之前插入一个断点,并且我在HttpGet方法中的ClassId值取需要删除的类的实际(正确)Id时卡住了一点HttpPost方法中的ClassId值与HttpGet方法的ClassId值不匹配,HttpPost中ClassId的Infact值返回null,因此我遇到了对象具有空值的异常错误。如果有人能够承认我可以消除这种错误,那将是非常好的。谢谢。下面分别是控制器的代码和相应的视图。控制器中的HttpPost方法与HttpGet方法不协调
控制器代码
[HttpGet]
public IActionResult Delete(int ClassId)
{
return View(db.Class.Include(x => x.Student).First(c => c.ClassId == ClassId));
}
[ActionName("Delete")]
[HttpPost]
public IActionResult DeletePost(int ClassId)
{
var r = db.Class.First(a => a.ClassId == ClassId);
var student = r.StudentId.ToString();
db.Remove(r);
db.SaveChanges();
return RedirectToAction("Details", "Student", new { id = student });
}
查看代码
@model DemoProject.Models.Class
@{
ViewData["Title"] = "Delete Class";
}
<h3>Are you sure you want to delete this?</h3>
<div>
<hr />
<dl class="dl-horizontal">
<dt>
@Html.DisplayNameFor(model => model.ClassName)
</dt>
<dd>
@Html.DisplayFor(model => model.ClassName)
</dd>
<dt>
@Html.DisplayNameFor(model => model.Title)
</dt>
<dd>
@Html.DisplayFor(model => model.Title)
</dd>
<dt>
@Html.DisplayNameFor(model => model.Text)
</dt>
<dd>
@Html.DisplayFor(model => model.Text)
</dd>
</dl>
<form asp-action="Delete">
<div class="form-actions no-color">
<input type="submit" value="Delete" class="btn btn-danger" />
<div class="row">
<a asp-action="Details" asp-controller="Student" asp-route-id="@Model.Student.StudentId">Back</a>
</div>
</div>
</form>
</div>
你可以将代码发布到你的视图吗? –
@CoreySmith我刚刚发布了它 – Priyanshu
你似乎没有将ID从你的表单传递给post方法。使用隐藏字段或类似内容。 –