簡體   English   中英

如何在控制器操作中獲取實體以填充外鍵對象的值?

[英]How do I get Entity to populate the values of foreign key objects at the controller action?

我正在嘗試使用CodeFirst和Entity Framework在MSMVC中使用DataBinding。 我試圖將帶有外鍵的模型傳遞給視圖,編輯數據並將結果綁定回控制器操作中,然后再執行更新。

簡而言之,我如何獲得實體以在控制器中填充外鍵對象的值。

該模型非常簡單,僅包含字符串“ Text”和外鍵UserModel“ User”。 BaseModel僅包含一個Id和一個DateTime。

public class CommentModel : BaseModel
{
    [Required]
    [Display(Name = "Text")]
    public string Text { get; set; }

    public virtual UserModel User { get; set; }
}

在我的Razor視圖中,User.Id有一個隱藏字段:

@Html.HiddenFor(model => model.User.Id)

在我的控制器動作中,我有:

[HttpPost]
[ValidateAntiForgeryToken]
public ActionResult Edit(CommentModel model)
{
    if (!ModelState.IsValid)
    {
        return View(model);
    }

    _commentsRepository.Update(model);

    return RedirectToAction("Index");
}

問題在於ModelState包含錯誤,因為僅填充了UserModel的Id屬性?

誰能告訴我我在做什么錯?

您是否通過視圖中的表單字段設置了其他屬性,還是由於其他原因而只是將用戶ID傳遞回去。

如果要在視圖中更新UserModel的其他屬性,則只要命名約定正確,即應通過模型綁定自動序列化這些屬性,即“ ID =” User.Id“或ID =” User.FirstName“ ...

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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