@Jeffreyがカスタムモデルバインダーを使用することに同意しますが、実装する代わりにIModelBinder
、クラスから継承しDefaultModelBinder
、メソッドのみをオーバーライドしますCreateModel
。
このCreateModel
メソッドは、Modelクラスの新しいインスタンスを毎回インスタンス化するメソッドであるため、そのメソッドでは、セッションに患者インスタンスがあるかどうかを確認し、ある場合はそれを返します。
public class CustomModelBinder: DefaultModelBinder
{
protected override object CreateModel(ControllerContext controllerContext, ModelBindingContext bindingContext, System.Type modelType)
{
// check if the session has patient instance and if yes return that.
return base.CreateModel(controllerContext, bindingContext, modelType);
}
}
このモデルバインダーを登録した後、属性を使用してモデルを更新するために含める必要のあるプロパティをアクションメソッドに指定しBind
ます。
元。
public ActionResult UpdatePatientNameOnly(Patient patient[Bind(Include="First, Last")])
{
}
public ActionResult UpdatePatientAge(Patient patient[Bind(Include="Age")])
{
}
重要:私はこれをテストしていません