一种基于Id将数据加载到实体的方法。模型绑定

时间:2014-07-17 08:52:53

标签: c# asp.net asp.net-mvc entity-framework

这是一个ASP.NET MVC项目,

ViewModel看起来像这样:

public class QuestionViewModel
{
    public CheckListsQuestion CheckListsQuestion { get; set; } //this is EF entity
    public string Points { get; set; }
}   

该视图看起来有点像

@model System.Collections.Generic.List<WebCheckList.Models.QuestionViewModel>
@using (Html.BeginForm("Submit", "CheckList" ... )
{
    foreach (var viewModel in Model)
    {
        <input type="hidden" name="[@counter].CheckListsQuestion.ID"  value="@viewModel.CheckListsQuestion.ID" />
        <input type="number" name="[@counter].Points" >
    }
}

如果我试图让它像

那样
<input type="hidden" name="[@counter].CheckListsQuestion"  value="@viewModel.CheckListsQuestion" />

我最终得到一个null(当我点击提交按钮时)。如果我绑定到ID,那么我将CheckListsQuestion的所有字段都清空 - 只填充ID。 有没有办法将基于Id的数据库中的所有字段的值加载到实体中,还是有更好的方法来处理绑定?

1 个答案:

答案 0 :(得分:0)

现在我最终得到.Attach(); .Reload();这样的组合:

var question = questionViewModel.CheckListsQuestion;
_db.CheckListsQuestions.Attach(question);
_db.Entry(question).Reload();