簡體   English   中英

HttpPost Model ID 始終為 0

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM