有没有任何方法可以使用没有魔术字符串的强类型UpdateModel(myEntity, MagicStringPrefix)
?
所以我有一个看起来像
的视图模型public class FooViewModel {
public Foo Foo { get; set; }
...
}
在我的控制器中我有
[AcceptVerbs(HttpVerbs.Post)]
public ActionResult Edit(int id, FormCollection collection)
{
var foo = _fooRepo.GetFoo(id);
try
{
UpdateModel(foo, "Foo");
_fooRepo.Save();
return RedirectToAction("Index");
}
catch (Exception ex)
{
return View(new FooViewModel(foo));
}
}
我想这样做而不必使用魔术字符串。像UpdateModel(foo, Model.Foo)
这样的东西就可以了。但是,我更喜欢只需要UpdateModel(foo)
并让它推断前缀,因为Foo是类名,但我真的不想写自己的ModelBinder。
答案 0 :(得分:3)
您可以定义自己的更新方法:
protected void MyUpdateModel<T>(T model) where T : class
{
UpdateModel(model, model.GetType().Name);
}
答案 1 :(得分:0)
如果您拥有所有属性名称匹配,则应该能够在操作方法中传入强类型对象。我认为您不需要编写自己的模型绑定来实现此目的。
阅读this blog以获得一些想法。