MVC 4 を Entity Framework と組み合わせて使用します。私は永続的なエンティティ基本クラスを持っています。このクラスは、すべてのエンティティがコード内で生成されることを定義します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 はかなりしつこく "Id" を "PersonId" に置き換えようとします。
@Html.HiddenFor(x => x.Id)
@Html.HiddenFor(x => x.PersonId)
Id 隠しフィールドがある場合は、ビューをレンダリングするときに PersonId で上書きされます。「PositionId」にすると、保持されて FormValue コレクションに返されます (Request["PositionId"] は正しい値を生成します) が、MVC ModelBinder再びバガーズ:
public ActionResult Edit (Postion model)
{
// model.Id = Guid.Parse(Request["PositionId"]);
...
bool isFoiledAganin = modelId.Equals(model.PersonId); // true
}
割り当てのコメントを外すだけで問題がmodel.Id
修正されます。
私の推測では、ModelBinder は、継承されたフィールドを考慮せずに、クラス内に「id」を持つものを見つけると道を失うということです。 彼女をまっすぐにする方法はありますか?