我需要在帖子编辑操作上访问导航属性,但是当我调用数据库并“重新更新”模型时,我所做的当前方式看起来不是最佳选择。有更好的解决方案吗?
public class Foo
{
public int Id { get; set; }
public string SomeProp { get; set; }
}
public class Bar
{
public int Id { get; set; }
public int FooId { get; set; }
public Foo Foo { get; set; }
}
[HttpPost]
public ActionResult Edit(Bar bar)
{
// Here bar.FooId is set but bar.Foo is null as bar is not a Dynamic Proxy.
...
bar = db.Bar.Find(bar.id);
TryUpdateModel(bar);
return View(bar); // Here bar.Foo is set.
}
我发现的另一种方式是:
db.Bar.Attach(bar);
db.Entity<Bar>(bar).Reference(b => b.Foo).Load();
但它要求我引用我需要的所有导航属性。
答案 0 :(得分:0)
我不是100%确定这是否是正确或最好的方式,但是,在处理帖子的UI表单中,UI元素需要绑定到导航属性,或者您也可以传递它们如果没有被修改,则为隐藏字段
<!-- example of hidden properties -->
@Html.HiddenFor(x=>x.Foo.FooId)
<!-- exampld of editable UI element mapped to navigation property's someprop property -->
@Html.TextBoxFor(x=>x.Foo.SomeProp)