(Try)UpdateModel を使用する正しい方法は何ですか?
これを実行すると:
TryUpdateModel
true を返し、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; }
}
EDIT:フォームコレクションを明示的に渡そうとしました
TryUpdateModel(Proxy, TypeName, idontknow)
編集#2:(NickLarsenへの返信)
- VSとサーバーを再起動しましたが、変化はありません。
- 値は実際には FormCollection にあります。
- モックデータが動く!ここで何かを台無しにしているに違いないことはわかっています。
- デバッガーを使用して値を確認します。