使用 (Try)UpdateModel 的正确方法是什么?
当我运行这个:
TryUpdateModel
返回真,ViewData
没有错误,- 但我
Proxy
的没有更新。
动作方法
public void Save(string TypeName, int Id, FormCollection idontknow) {
var types = Assembly.GetExecutingAssembly().GetTypes();
var ObjectType=(from t in types where t.Name == TypeName select t).First();
var Proxy = context.Set(ObjectType).Find(Id); // EF 4.1
if (TryUpdateModel(Proxy, TypeName)) {
var x = ViewData.GetModelStateErrors(); // no errors
}
}
发布数据
TypeName=Thing&Id=1&Thing.Id=1&Thing.Name=hello&Thing.OptionID=2
事物类
public class Thing : Base {
public virtual Nullable<int> OptionID { get; set; }
public virtual Option Option { get; set; }
public virtual ICollection<ListItem> ListItems { get; set; }
}
public class Base {
public virtual int Id { get; set; }
public virtual string Name { get; set; }
[NotMapped]
public virtual int? EntityState { get; set; }
}
编辑:我也尝试过明确地传递表单集合
TryUpdateModel(Proxy, TypeName, idontknow)
编辑#2:(回应尼克拉森)
- 重新启动VS和服务器,没有变化。
- 值实际上在 FormCollection 中。
- 模拟数据有效!我知道我一定在这里搞砸了。
- 使用调试器检查值。