C# HttpPost模型ID始终为0
我有一个更新页面,获取包含我的模型的ViewModel。当我将其加载到页面时,一切正常,但当我提交更改时,我的模型ID总是0,我的意思是几乎总是。我正在学习一个教程,我完全按照他所做的做了,而且仍然0 这是我的POST方法,我在其中传递VM-in参数C# HttpPost模型ID始终为0,c#,asp.net,asp.net-mvc,C#,Asp.net,Asp.net Mvc,我有一个更新页面,获取包含我的模型的ViewModel。当我将其加载到页面时,一切正常,但当我提交更改时,我的模型ID总是0,我的意思是几乎总是。我正在学习一个教程,我完全按照他所做的做了,而且仍然0 这是我的POST方法,我在其中传递VM-in参数 [HttpPost] [ValidateAntiForgeryToken] public IActionResult Update(ExpenseVM obj) { if (ModelState.Is
[HttpPost]
[ValidateAntiForgeryToken]
public IActionResult Update(ExpenseVM obj)
{
if (ModelState.IsValid)
{
_db.Expenses.Update(obj.Expense);
_db.SaveChanges();
return RedirectToAction("Index");
}
return View(obj);
}
这是我的ID的HTML/C代码
<input type="hidden" asp-for="Expense.Id" value="@Model.Expense.Id" name="Id"/>
当我加载我的页面时,我的ID被加载,一切正常。
在调试过程中,我的HTML中包含以下内容:
<input type="hidden" value="1" name="Id" data-val="true" data-val-required="The Id field is required." id="Expense_Id">
我找到了它不起作用的原因 我的HTML是这样的
<form method="post" asp-action="Update">
<div class="border p-3">
<div class="form-group row">
<h2 class="text-black-50 pl-3">Update Expense</h2>
</div>
<div class="row">
<input type="hidden" asp-for="Expense.Id" value="@Model.Expense.Id" name="Id"/>
<div class="col-12">
... BLABLABLA
</div>
</div>
</div>
</form>
<form method="post" asp-action="Update">
<input asp-for="Expense.Id" hidden/>
<div class="border p-3">
<div class="form-group row">
<h2 class="text-black-50 pl-3">Update Expense</h2>
</div>
<div class="row">
<div class="col-12">
... BLABLABLA
</div>
</div>
</div>
</form>
而且效果很好
现在请不要问我为什么,因为我不知道,但是如果有人知道为什么?我洗耳恭听