Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-mvc/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# ASP.NET MVC 2-传递给delete方法控制器的对象为空_C#_Asp.net Mvc_Controller_Sql Delete - Fatal编程技术网

C# ASP.NET MVC 2-传递给delete方法控制器的对象为空

C# ASP.NET MVC 2-传递给delete方法控制器的对象为空,c#,asp.net-mvc,controller,sql-delete,C#,Asp.net Mvc,Controller,Sql Delete,我正试图从数据库中删除一个条目。 这是我的控制器方法: public ActionResult Delete(Models.CommentEntry entry) { _db.Entries.Remove(entry); _db.SaveChanges(); return RedirectToAction("Index"); } 这是我的.cshtml: @foreach (var en

我正试图从数据库中删除一个条目。 这是我的控制器方法:

   public ActionResult Delete(Models.CommentEntry entry)
    {
        _db.Entries.Remove(entry);
        _db.SaveChanges();
        return RedirectToAction("Index");
    }
这是我的.cshtml:

         @foreach (var entry in ViewBag.Entries)
            {
                <section class="contact">
                    <header>
                        <h3>@entry.Message</h3>
                    </header>
                    <p>
                        Posted by @entry.Name on @entry.DateAdded.ToLongDateString()
                    </p>
                </section>
                <form method="post" action="Delete">
                    <input type="submit" value="Delete" class="btn btn-danger" />
                </form>
            }
@foreach(ViewBag.Entries中的变量条目)
{
@条目。消息

@entry.Name在@entry.DateAdded.ToLongDateString()上发布

}

这就是它现在的样子。正如您所看到的,每当用户按下delete键时,我都希望删除相应的注释。我正在使用foreach访问它们,并希望通过这种方式可以将comment对象传递给控制器。

正如您所看到的,对象没有被传递,并且总是有初始值,因此我得到了一个转储。我的错在哪里


谢谢。

这个问题没有错

<section class="contact">
                <header>
                    <h3>@entry.Message</h3>
                </header>
                <p>
                    Posted by @entry.Name on @entry.DateAdded.ToLongDateString()
                </p>
                 <form method="post" action="Delete"><!-- must have name and value input for form tag -->
            </section>
                <input type="submit" value="Delete" class="btn btn-danger" />
            </form>

@条目。消息

@entry.Name在@entry.DateAdded.ToLongDateString()上发布


请阅读此

这不是一个错误的问题

<section class="contact">
                <header>
                    <h3>@entry.Message</h3>
                </header>
                <p>
                    Posted by @entry.Name on @entry.DateAdded.ToLongDateString()
                </p>
                 <form method="post" action="Delete"><!-- must have name and value input for form tag -->
            </section>
                <input type="submit" value="Delete" class="btn btn-danger" />
            </form>

@条目。消息

@entry.Name在@entry.DateAdded.ToLongDateString()上发布


请阅读此

您必须在表单标签之间输入输入参数。 对于条目模型中的每个参数,声明一个带有名称和值的输入标记。 更改表单零件代码,如下所示:

<form method="post" action="Delete">
<input type="hidden" name="Message" value="@entry.Message" /> 
<input type="hidden" name="Id" value="@entry.Id" />
 .
 .
<input type="submit" class="btn btn-danger" />
</form>

.
.
有关向控制器发送数据的更多信息,请阅读本文:

必须在表单标记之间输入输入参数。 对于条目模型中的每个参数,声明一个带有名称和值的输入标记。 更改表单零件代码,如下所示:

<form method="post" action="Delete">
<input type="hidden" name="Message" value="@entry.Message" /> 
<input type="hidden" name="Id" value="@entry.Id" />
 .
 .
<input type="submit" class="btn btn-danger" />
</form>

.
.
有关向控制器发送数据的更多信息,请阅读本文:

首先,我想你是从拉威尔来的(我从你的行动中了解到这一点)。 这是我的代码,我解释了所有内容:

public async Task<ActionResult> Delete(int Id)
{
    var entry = _db.Entries(x=>x.Id == Id);
    if(entry != null)
    {
        _db.Entries.RemoveAsync(entry);
        _db.SaveChangesAsync();
    }
    return RedirectToAction("Index");
}
公共异步任务删除(int-Id)
{
var entry=_db.Entries(x=>x.Id==Id);
if(条目!=null)
{
_db.Entries.RemoveAsync(条目);
_db.saveChangesSync();
}
返回操作(“索引”);
}
现在您还必须修复您的cshtml文件,以便将Id发送到此操作

@foreach (var entry in ViewBag.Entries)
{
    <section class="contact">
        <header>
            <h3>@entry.Message</h3>
        </header>
        <p>
            Posted by @entry.Name on @entry.DateAdded.ToLongDateString()
        </p>
    </section>
    <form  action="Delete">
        <input type="hidden" name="Id" value="@entry.Id" />
        <input type="submit" value="Delete" class="btn btn-danger" />
    </form>
}
@foreach(ViewBag.Entries中的变量条目)
{
@条目。消息

@entry.Name在@entry.DateAdded.ToLongDateString()上发布

}
首先,我想你是从拉威尔来的(我从你的行动中了解到这一点)。 这是我的代码,我解释了所有内容:

public async Task<ActionResult> Delete(int Id)
{
    var entry = _db.Entries(x=>x.Id == Id);
    if(entry != null)
    {
        _db.Entries.RemoveAsync(entry);
        _db.SaveChangesAsync();
    }
    return RedirectToAction("Index");
}
公共异步任务删除(int-Id)
{
var entry=_db.Entries(x=>x.Id==Id);
if(条目!=null)
{
_db.Entries.RemoveAsync(条目);
_db.saveChangesSync();
}
返回操作(“索引”);
}
现在您还必须修复您的cshtml文件,以便将Id发送到此操作

@foreach (var entry in ViewBag.Entries)
{
    <section class="contact">
        <header>
            <h3>@entry.Message</h3>
        </header>
        <p>
            Posted by @entry.Name on @entry.DateAdded.ToLongDateString()
        </p>
    </section>
    <form  action="Delete">
        <input type="hidden" name="Id" value="@entry.Id" />
        <input type="submit" value="Delete" class="btn btn-danger" />
    </form>
}
@foreach(ViewBag.Entries中的变量条目)
{
@条目。消息

@entry.Name在@entry.DateAdded.ToLongDateString()上发布

}
谢谢您的回答。不幸的是,它仍然不起作用,参数仍然没有传递到控制器,它仍然为空。请尝试这样做,对于条目模型中的每个参数,声明一个带有名称和值的输入标记。例如:。它当然有效。谢谢,它现在有效了,我正确地传递了值。现在,由于某种原因,它在我的objectstatemanager中找不到,尽管我肯定它的ID是正确的,但我想这是一个单独的问题,我将研究。我已经编辑了答案。祝你好运,谢谢你的回答。不幸的是,它仍然不起作用,参数仍然没有传递到控制器,它仍然为空。请尝试这样做,对于条目模型中的每个参数,声明一个带有名称和值的输入标记。例如:。它当然有效。谢谢,它现在有效了,我正确地传递了值。现在,由于某种原因,它在我的objectstatemanager中找不到,尽管我肯定它的ID是正确的,但我想这是一个单独的问题,我将研究。我已经编辑了答案。祝你好运