多态自定义模型绑定器没有填充模型w /值
我有一个自定义模型绑定器,我用它来返回基于包含原始类型的隐藏值的相应模型子类型。
例如,在我的视图(EditorTemplate)中,我有:
@model MyWebApp.Models.TruckModel @Html.Hidden("ModelType", Model.GetType()) @Html.EditorFor(m => m.CabSize)
然后,在我的自定义模型绑定器中,我有:
protected override object CreateModel(ControllerContext controllerContext, ModelBindingContext bindingContext, Type modelType) { var typeValue = bindingContext.ValueProvider .GetValue(bindingContext.ModelName + ".ModelType"); var type = Type.GetType((string)typeValue.ConvertTo(typeof(string)), true); var model = Activator.CreateInstance(type); bindingContext.ModelMetadata = ModelMetadataProviders.Current .GetMetadataForType(() => model, type); return model; }
typeValue
和type
变量被设置为适当的值(类型为TruckModel
),但在执行GetMetadataForType
, model
仍然填充了null / default值。
我检查了几个post( 这里和这里列出一对夫妇),看起来我正在做这里所解释的一切,但它仍然不适合我。
您可以参考我之前关于此主题的post ,找到有关视图/模型设置的更多详细信息。
正如@sydneyos在评论中所述,我的模型实际上已经填充,但显然在CreateModel方法中,返回的模型将不包含该点的值。
在我的情况下,我在这个方法之后得到了一个ArgumentNullException
,我认为这是由于模型没有被填充。 但事实certificate,它是无关的,一旦修复,模型绑定按预期工作。
- 使用ASP.Net MVC3显示包含在byte 中的图像
- 从.net中的另一个应用程序调用asp mvc Controller Action?
- 共享连接字符串
- 无法加载文件或程序集’EntityFramework,Version = 6.0.0.0,
- C#.NET使用isAuthenticated
- 来自MVC App的WCF服务身份validation共享相同的成员资格提供者
- 将LINQ扩展为SQL生成的类
- 使用Owin的Twitter外部登录提供HTTP 403(禁止)
- 使用EF / Code First / Repository Pattern / Table Per Type(TPT)时的良好编程原则?