在ASP.Net MVC模型中,可以创建绑定类型的对象,然后更新它的属性。
e.g。
public override object BindModel(ControllerContext controllerContext,
ModelBindingContext bindingContext)
{
ParentType boundModel = null;
if (bindingContext.ModelType == typeof(ParentType))
{
var myFactory = new MyFactory();
var someValue = bindingContext.ValueProvider.GetValue
("someFieldId").AttemptedValue;
ChildType child = myFactory.Create(someValue);
BindModel(child);
boundModel = child;
}
return boundModel;
}
在这段代码中,我想知道是否有类似于BindModel(子)调用的东西,有点像来自控制器的TryModelUpdate()?
答案 0 :(得分:2)
我认为对你的问题更好的方法是从DefaultModelBinder(我认为你可能是)派生,然后覆盖CreateModel方法而不是BindModel方法。
通过从中返回您的Child对象,您应该沿着您正在寻找的路径。
答案 1 :(得分:0)
public override object BindModel(ControllerContext controllerContext,
ModelBindingContext bindingContext)
{
ParentType boundModel = null;
if (bindingContext.ModelType == typeof(ParentType))
{
var myFactory = new MyFactory();
var someValue = bindingContext.ValueProvider
.GetValue("someFieldId").AttemptedValue;
ChildType child = myFactory.Create(someValue);
BindModel(child);
boundModel = child;
}
// change here
bindingContext.ModelMetadata.Model = boundModel;
return BindModel(controllerContext, bindingContext);
}
这个怎么样?
答案 2 :(得分:0)
绑定器只需要在类属性和字段值中使用相同的名称,调用updatemodel会将任何匹配的值放入模型中。
所以你应该能够创建任何类型的类并调用updatemodel ???