[英]HttpPost Model ID is always 0
我有一個更新頁面,其中包含一個包含我的 Model 的 ViewModel。 當我將它加載到頁面時,一切正常,但是當我提交更改時,我的模型 ID始終為 0,我的意思是LITTERALY ALWAYS 。 我正在學習一個教程,我完全按照他的做法做了,但仍然是 0。
這是我在參數中傳遞 VM 的 POST 方法。
[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>
所以我只是將輸入行從<div class="row>
移動到<form method="post" asp-action"Update">
並刪除了所有這些無用的標簽,例如name="Id"
value="@Model.Expense.Id"
type="hidden"
現在看起來就像這樣
<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>
它工作正常。
現在請不要問我為什么,因為我不知道,但如果有人回答為什么? 我全是耳朵。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.