我们将 MVC 4 与实体框架结合使用。我有一个持久的实体基类,这个类定义所有实体都有一个生成的代码GUID Id
:
public abstract class Entity
{
public Guid Id {get; set;}
;...
}
以及以下具体类:
public class Person : Entity
{
public List<Position> Positions{get;set;}
;...
}
public class Position : Entity
{
;...
public Guid Person{get; set;}
public Guid PersonId{get; set;} //recently added because of other EF issues :-(
}
在 Position 视图中,我们尝试了几件事,但 MVC 非常坚持尝试用“PersonId”替换“Id”:
@Html.HiddenFor(x => x.Id)
@Html.HiddenFor(x => x.PersonId)
如果我们只有一个 Id 隐藏字段,它会在呈现视图时用 PersonId 覆盖又把事情搞砸了:
public ActionResult Edit (Postion model)
{
// model.Id = Guid.Parse(Request["PositionId"]);
...
bool isFoiledAganin = modelId.Equals(model.PersonId); // true
}
只有取消注释model.Id
分配才能解决问题。
我的猜测是,当 ModelBinder 在类中找到带有“id”的东西时,它会丢失它的方式,而不考虑继承的字段。 有没有办法让她直起身子?