2013-01-10 59 views
0

我创建了脚手架删除视图进行删除,但不起作用。当调试时,我发现它没有将正确的记录ID传递给控制器​​。总是它传递0作为ID并且结果是一个异常(ystem.NullReferenceException未被用户代码未处理Message = Object reference未设置为对象的实例)。MVC 4脚手架删除问题ID

但在视图中提交按钮显示正确的URL的正确的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]方法与断点,通过该方法作为参数取对象似乎不与值进行初始化。显示0表示ID字段,null表示其他字段。

在重新创建视图,重写控制器方法,更改属性等方面进行了工作,但仍然遇到问题。感谢您的意见。

感谢(用于创建,列表和编辑,都可以正常使用。BTW创建脚手架视图),

Chatur

回答

0

当过帖子发到我注意到有id的形式= “形式”总是有帮助的。

@using (Html.BeginForm("Create", "RunLogEntry", FormMethod.Post, new { id = "form", enctype = "multipart/form-data" })) 
    { 
0

在MVC的默认方式ID参数中的URL不会对身体过去了,这就是为什么它的空。

更改httpPost删除为;

public ActionResult DeleteSubject(int id, SubjectModel subject) 

还我注意到你有形式,我应该去里面外面// ... form elements go here