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是正确的,但我想这是一个单独的问题,我将研究。我已经编辑了答案。祝你好运