在我的 Action 中,当我使用 TryUpdateModel 时出现 System.MissingMethodException 类型的错误。 我在我的 Controller 中的几个地方使用它没有问题,所以这意味着我的模型有问题?
在这种情况下,我使用来 self 的域的派生类。
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; }
}
为了展示,我使用了这个Action
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 的问题。 通过逐步调试,我看不出为什么这个组件会捕获错误,这个缺失的方法在哪里?
感谢您的帮助:)
最佳答案
在 DetailTypeOperationModel 类中使您的 TypeOperationDisplay 属性虚拟。
public class DetailTypeOperationModel : ViewModelBase
{
public Int64 IdTypeOperation { get; set; }
public virtual TypeOperationDisplay TypeOperationDisplay { get; set; }
}
我在这里猜测,但我的理论是 EF 正在尝试创建 DetailTypeOperationModel 的代理,但不能,因为您自己的类属性不是虚拟的。
关于c# - TryUpdateModel 和 System.MissingMethodException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6029444/