使用.Net Mvc手动绑定模型

本文关键字:绑定 模型 Net Mvc 使用 | 更新日期: 2023-09-27 18:29:58

我想知道是否有一种方法可以使用类似于控制器操作之前发生的内部模型绑定的内置模型绑定。

我的问题是,我希望能够控制绑定,因为在我真正进入控制器操作的上下文之前,我不知道要绑定的对象的类型。

我知道我可以继承DefaultModelBinder来执行自定义绑定,但我对已经提供的内容很满意,只想利用它-以理想的为例,了解我想要什么:

public ActionResult DoCustomBinding(string modelType)
{
    ... // logic to determine type to check and create strong 'actual' type
    object model = BindModel(actualType);
    ... // do something with bound model
    return View();
}

我已经研究过使用DefaultModelProvider,但不确定这是否是正确的方法,也不确定如何获得ModelBindingContext。

使用.Net Mvc手动绑定模型

如果有人像我一样在谷歌上遇到这个问题,答案是:如何控制模型绑定?

简而言之:TryUpdateModel是您正在寻找的方法。

如果只想验证模型的特定部分,这可能与我之前回答的MVC部分模型更新问题重复。

使用System.ComponentModel.DataAnnotations.MetadataType最酷的地方是,模型绑定器将保持绑定到派生对象,该派生对象与基对象基本相同,只是具有不同的显示/验证元数据。

您查看过IModelBinder接口吗?

public class CustomModelsBinder : IModelBinder {
    public object BindModel(ControllerContext controllerContext, ModelBindingContext bindingContext) { }
}

然后将其添加到您的global.asax文件中:

protected override void OnApplicationStarted() {
   ModelBinders.Binders.Add(typeof(CustomModels), new CustomModelsBinder());
}