gpt4 book ai didi

asp.net-mvc-4 - 自定义多态模型绑定(bind)器不绑定(bind)派生类型的属性

转载 作者:行者123 更新时间:2023-12-01 05:18:49 24 4
gpt4 key购买 nike

这是我的自定义模型绑定(bind)器,用于实例化派生类。

public class LocationModalBinder : DefaultModelBinder
{
protected override object CreateModel(ControllerContext controllerContext, ModelBindingContext bindingContext,
Type modelType)
{
var type = bindingContext.ModelName + "." + "type";

Type typeToInstantiate;

switch ((string) bindingContext.ValueProvider.GetValue(type).RawValue)
{
case "store":
{
typeToInstantiate = typeof (Store);
break;
}
case "billing":
{
typeToInstantiate = typeof(LocationReference);
break;
}
case "alternate":
{
typeToInstantiate = typeof(Address);
break;
}
default:
{
throw new Exception("Unknown location identifier.");
}
}

return base.CreateModel(controllerContext, bindingContext, typeToInstantiate);
}
}

问题是它没有绑定(bind)子类型的属性。仅基类型 Location 上的属性.为什么是这样?

最佳答案

我认为调用 return base.CreateModel正如你所尝试的那样很好。

我通过在 return base.CreateModel 之前添加以下内容来解决它线:

bindingContext.ModelMetadata = ModelMetadataProviders.Current.GetMetadataForType(null, typeToInstantiate);

关于asp.net-mvc-4 - 自定义多态模型绑定(bind)器不绑定(bind)派生类型的属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18036382/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com