在我的Action中,当我使用TryUpdateModel时,我遇到System.MissingMethodException类型的错误。 我在我的控制器的几个地方使用它没有问题,所以这意味着我的模型有问题吗?
在这种情况下,我使用来自我的域的派生类。
public class TypeOperationDisplay : TypeOperation
{
public TypeOperationDisplay(TypeOperation to)
{
Id = to.Id;
Code = to.Code;
Libelle = to.Libelle;
LibelleSaisie = to.LibelleSaisie;
}
[ScaffoldColumn(false)]
public override long Id
{
get
{
return base.Id;
}
set
{
base.Id = value;
}
}
[HtmlPropertiesAttribute(MaxLength=255, Size=50, ReadOnly=true)]
[DisplayName("")]
public override string Code
{
get
{
return base.Code;
}
set
{
base.Code = value;
}
}
}
生成TypeOperation。我从这个类派生来添加属性,然后在我的模型中使用它。
public class DetailTypeOperationModel : ViewModelBase
{
public Int64 IdTypeOperation { get; set; }
public TypeOperationDisplay TypeOperationDisplay { get; set; }
}
要显示,我使用此动作
public ActionResult AfficheDetailTypeOperation(Int64 idTypeOperation)
{
DetailTypeOperationModel d = new DetailTypeOperationModel
{
IdTypeOperation = idTypeOperation,
TypeOperationDisplay = _srvTypeOperation.Charger(idTypeOperation).ToDisplay()
};
return View("GererTypeOperation", d);
}
检索已发送的数据
[HttpPost]
public ActionResult ModifieTypeOperation(Int64 idTypeOperation, FormCollection fc)
{
DetailTypeOperationModel d = new DetailTypeOperationModel();
TryUpdateModel<DetailTypeOperationModel>(d);
_srvTypeOperation.Modifier(d.TypeOperationDisplay);
return View("Index", new AdministrationModel());
}
就在这个Action上,我在TryUpdateModel上遇到了问题。 通过逐步调试,我看不出为什么这个组件会捕获错误,这个缺少的方法在哪里?
感谢您的帮助:)
答案 0 :(得分:1)
在DetailTypeOperationModel类中创建TypeOperationDisplay属性虚拟。
public class DetailTypeOperationModel : ViewModelBase
{
public Int64 IdTypeOperation { get; set; }
public virtual TypeOperationDisplay TypeOperationDisplay { get; set; }
}
我在这里猜测,但我的理论是EF正在尝试创建DetailTypeOperationModel的代理,而不能因为你自己的类属性不是虚拟的。