0

我试图按照 Darin Dimitrov 在这篇文章中的回答: How to create controls dynamic in MVC 3 based on an XML file。但是在 ASP .NET Core(特别是 ASP .NET Core 2)中没有 DefaultModelBinder,所以我必须修改自定义模型绑定器代码才能使用 ASP .NET Core。

其实我的代码是:

public class ControlModelBinder : IModelBinder
{
    public Task BindModelAsync(ModelBindingContext bindingContext)
    {
        var type = bindingContext.ValueProvider.GetValue(bindingContext.ModelName + ".Type");
        object model = null;

        switch (type.FirstValue)
        {
            case "TextBox":
            {
                model = new TextBoxViewModel();
                break;
            }
            case "CheckBox":
            {
                model = new CheckBoxViewModel();
                break;
            }
            case "DropDownList":
            {
                model = new DropDownListViewModel();
                break;
            }
            default:
            {
                throw new NotImplementedException();
            }
        };

        bindingContext.ModelMetadata = ModelMetadataProvider.GetMetadataForType(model.GetType());
        bindingContext.Model = model;

        return Task.CompletedTask;
    }
}

我实际上遇到的问题是 ModelMetadataProvider.GetMetadataForType 向我显示错误:

非静态字段、方法或属性“ModelMetadataProviderGetMetadataForType(Type)”需要引用。

那么,我该怎么做才能使model.GetType()工作?

如何获取 ControllerContext 和 modelType?

如果有人知道如何将这段代码从 ASP .NET MVC 转换为 ASP .NET Core,我会非常感谢他的帮助。

先感谢您!

4

0 回答 0