0

我为删除创建了脚手架删除视图,但它不起作用。调试时我发现它没有将正确的记录 ID 传递给控制器​​。始终将 0 作为 ID 传递,结果是异常(ystem.NullReferenceException 未由用户代码处理 Message=Object reference not set to an instance of an object.)。

但在视图提交按钮中显示正确的 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] 方法时,该方法作为参数的对象似乎未使用值初始化。ID 字段显示 0,其他字段显示 null。

致力于重新创建视图、重写控制器方法、更改属性等。但仍然遇到问题。感谢您的意见。

(顺便说一句,为 Create、List 和 Edit 创建了脚手架视图。它们运行良好。)

谢谢,

查图尔

4

2 回答 2

0

当我发布到表单时,我注意到 id="form" 总是有帮助的。

@using (Html.BeginForm("Create", "RunLogEntry", FormMethod.Post, new { id = "form", enctype = "multipart/form-data" }))
    {
于 2013-01-10T05:52:48.477 回答
0

在 MVC 中,Id 参数的默认方式是在 URL 上而不是在正文上传递,这就是它为 null 的原因。

将 httpPost 删除更改​​为;

public ActionResult DeleteSubject(int id, SubjectModel subject)

我也注意到你有// ... form elements go here我应该进去的表格。

于 2016-04-27T09:26:12.880 回答