我为删除创建了脚手架删除视图,但它不起作用。调试时我发现它没有将记录的正确ID传递给控制器。始终它传递0作为ID,结果是异常(ystem.NullReferenceException未被用户代码Message = Object引用未设置为对象的实例。)。
但是在视图中,“提交”按钮会显示正确ID的正确网址。
控制器:
public ActionResult DeleteSubject(int id)
{
try
{
// returns the View
}
catch (Exception e)
{
// Handle and log the exception
}
}
[HttpPost]
public ActionResult DeleteSubject(SubjectModel subject)
{
try
{
// Call methods for delete
}
catch (Exception e)
{
// Handle and log the exception
}
}
查看:
@model LMS.Models.SubjectModel
// ... form elements go here
@using (Html.BeginForm()) {
<input type="submit" value="Delete" />
}
当使用断点调试[HttpPost]方法时,方法作为参数采用的对象似乎没有用值初始化。 ID字段显示0,其他字段显示null。
致力于重新创建视图,重写控制器方法,更改属性等。但仍然会遇到问题。感谢您的意见。
(BTW为创建,列表和编辑创建了脚手架视图。它们工作正常。)
谢谢,
Chatur
答案 0 :(得分:0)
当我发布到表单时,我注意到id =“form”总是有帮助的。
@using (Html.BeginForm("Create", "RunLogEntry", FormMethod.Post, new { id = "form", enctype = "multipart/form-data" }))
{
答案 1 :(得分:0)
在MVC中,Id参数在不在主体上的URL上传递的默认方式,这就是为什么它为null。
将httpPost删除更改为;
public ActionResult DeleteSubject(int id, SubjectModel subject)
我也注意到你应该进入的格式之外有// ... form elements go here
。