如何使用2个主键从db表中删除行
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何使用2个主键从db表中删除行相关的知识,希望对你有一定的参考价值。
我是新的在Web应用程序上使用MVC C#...我在删除数据库中的一行时遇到麻烦...结果是“HTTP错误400.0 - 错误请求”
当表只有1个主键时,我不会收到此错误。
控制器:
// GET: DocenteCursoes/Delete/5
public ActionResult Delete(string curso, string docente)
{
if (curso == null && docente == null)
{
return new HttpStatusCodeResult(HttpStatusCode.BadRequest);
}
DocenteCurso docenteCurso = db.DocenteCurso.Find(curso, docente);
if (docenteCurso == null)
{
return HttpNotFound();
}
return View(docenteCurso);
}
// POST: DocenteCursoes/Delete/5
[HttpPost, ActionName("Delete")]
[ValidateAntiForgeryToken]
public ActionResult DeleteConfirmed(string curso, string docente)
{
DocenteCurso docenteCurso = db.DocenteCurso.Find(curso, docente);
db.DocenteCurso.Remove(docenteCurso);
db.SaveChanges();
return RedirectToAction("Index");
}
protected override void Dispose(bool disposing)
{
if (disposing)
{
db.Dispose();
}
base.Dispose(disposing);
}
模型:
[Table("DocenteCurso")]
public partial class DocenteCurso
{
[Key]
[Column(Order = 0)]
[StringLength(50)]
public string Curso { get; set; }
[Key]
[Column(Order = 1)]
[StringLength(50)]
public string Docente { get; set; }
}
视图:
@using (html.BeginForm()) {
@Html.AntiForgeryToken()
<div class="form-actions no-color">
<input type="submit" value="Delete" class="btn btn-default" /> |
@Html.ActionLink("Back to List", "Index")
</div>
}
答案
很可能你因为这种情况而得到BadRequest
:
if (curso == null && docente == null)
{
return new HttpStatusCodeResult(HttpStatusCode.BadRequest);
}
这与您的实体具有复合主键无关。确保您正在调用正确的控制器操作。
请注意,没有参数的Html.BeginForm()
会将HTTP POST发送到当前URL。
另一答案
好的,让我们从构造良好的URL开始,如下所示:
http://yourserver/DocenteCursoes/Delete?curso=firstparam&docente=secondparam
首先在Internet浏览器中尝试,然后告诉我是否可以摆脱404错误。
另一答案
视图:
@using (Html.BeginForm(null, null, new { curso = Model.Curso, docente = Model.Docente }))
{
@Html.AntiForgeryToken()
<div class="form-actions no-color">
<input type="submit" value="Delete" class="btn btn-default" /> |
@Html.ActionLink("Back to List", "Index")
</div>
}
以上是关于如何使用2个主键从db表中删除行的主要内容,如果未能解决你的问题,请参考以下文章