MVC 4脚手架删除ID问题

时间:2013-01-10 05:45:18

标签: c# asp.net-mvc-4 asp.net-mvc-scaffolding

我为删除创建了脚手架删除视图,但它不起作用。调试时我发现它没有将记录的正确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

2 个答案:

答案 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