gpt4 book ai didi

asp.net-mvc - 将我的自定义模型绑定(bind)到我的 POST Controller

转载 作者:行者123 更新时间:2023-12-02 00:21:45 24 4
gpt4 key购买 nike

我正在使用最近发布的 MVC 4 Beta (4.0.20126.16343) 并正在解决反序列化/模型绑定(bind)不适用于数组的已知问题(请参阅 Stack Overflow here)

我很难连接我的显式自定义绑定(bind)。我已经注册了一个客户 IModelBinder(或尝试注册),但是当我的后操作被调用时,我的自定义 Binder 没有被击中,我只是得到默认的序列化(使用空数组 - 即使 wireshark 向我显示传入的复杂对象包含数组元素).

我觉得我错过了什么,非常感谢任何解决方案或见解。

谢谢。

来自 global.asax.cs:

public static void RegisterRoutes(RouteCollection routes)
{
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");

routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{controller}/{id}",
defaults: new { id = RouteParameter.Optional }
);

routes.MapRoute(
name: "Default",
url: "{controller}/{action}/{id}",
defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
);
}

protected void Application_Start()
{
ModelBinders.Binders.Add(typeof(DocuSignEnvelopeInformation), new DocusignModelBinder());
AreaRegistration.RegisterAllAreas();

RegisterGlobalFilters(GlobalFilters.Filters);
RegisterRoutes(RouteTable.Routes);

BundleTable.Bundles.RegisterTemplateBundles();
}

和我的自定义 Binder :

public object BindModel(ControllerContext controllerContext, System.Web.Mvc.ModelBindingContext bindingContext)
{
var value = bindingContext.ValueProvider.GetValue("envelope");

var model = new DocuSignEnvelopeInformation();

//build out the complex type here

return model;
}

我的 Controller 只是:

public void Post(DocuSignEnvelopeInformation envelope)
{
Debug.WriteLine(envelope);
}

最佳答案

通常我们通过 DI 容器注册我们的模型绑定(bind)器并且它有效。向 DependencyResolver 使用的 DI 容器注册一个 IModelBinderProvider,并在 GetBinder 方法中从那里返回您的 ModelBinder。

关于asp.net-mvc - 将我的自定义模型绑定(bind)到我的 POST Controller ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10643590/

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