asp.net – 如何从身体绑定时自定义模型绑定器?
我一直在尝试使用模型绑定来使我们的API更易于使用.当使用API??时,我无法在数据在正文中时将模型绑定绑定到绑定,只有当它是查询的一部分时.
我的代码是: public class FunkyModelBinder : IModelBinder { public bool BindModel(HttpActionContext actionContext,ModelBindingContext bindingContext) { var model = (Funky) bindingContext.Model ?? new Funky(); var hasPrefix = bindingContext.ValueProvider .ContainsPrefix(bindingContext.ModelName); var searchPrefix = (hasPrefix) ? bindingContext.ModelName + "." : ""; model.Funk = GetValue(bindingContext,searchPrefix,"Funk"); bindingContext.Model = model; return true; } private string GetValue(ModelBindingContext context,string prefix,string key) { var result = context.ValueProvider.GetValue(prefix + key); return result == null ? null : result.AttemptedValue; } } 当查看bindingContext上的ValueProvider属性时,我只看到QueryStringValueProvider和RouteDataValueProvider,我认为这意味着如果数据在正文中,我将无法得到它.我该怎么做?我想支持将数据发布为json或form-encoded. 解决方法
我也在研究这个问题.
WebApis Model Binder附带两个内置的ValueProviders. QueryStringValueProviderFactory& RouteDataValueProviderFactory 你打电话时搜索哪些 context.ValueProvider.GetValue 这个问题有一些关于如何绑定来自正文的数据的代码. how to pass the result model object out of System.Web.Http.ModelBinding.IModelBinder. BindModel? 您可以创建一个自定义ValueProvider来执行此操作,这可能是一个更好的主意 – 将搜索与键匹配的值.上面的链接只是在模型绑定器中执行此操作,这限制了ModelBinder仅查看正文. public class FormBodyValueProvider : IValueProvider { private string body; public FormBodyValueProvider ( HttpActionContext actionContext ) { if ( actionContext == null ) { throw new ArgumentNullException( "actionContext" ); } //List out all Form Body Values body = actionContext.Request.Content.ReadAsStringAsync().Result; } // Implement Interface and use code to read the body // and find your Value matching your Key } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- asp.net – AJAX和FormsAuthentication,如何防止FormsAuthe
- asp.net-mvc – 一个ASP.NET MVC验证器,用于确保至少选中一
- ASP.NET -- 获取浏览器信息
- asp.net-mvc-4 – 重定向到动作,参数在mvc中始终为空
- asp.net – 使用“IN”SQL函数中的值将逗号分隔值从.NET传递
- ASP.net相同的原始策略标头不起作用
- asp.net-mvc – ASP.NET MVC Textarea HTML帮助器在使用Ant
- asp.net-mvc – ASP.NET MVC的示例企业应用程序?
- asp.net – Ext.net:如何设置宽度百分比而不是像素?
- asp.net-mvc – 访问ASP.NET MVC应用程序中的控制器/操作列
- .NET Core技术研究-HttpContext访问的正确姿势
- asp.net – 在负载均衡器上启用粘性会话
- asp.net-mvc – 无法更改关系,因为一个或多个外键
- ASP.Net相当于PHP的file_get_contents(‘php://
- asp.net-mvc – json.net中哪个命名空间有JObjec
- asp.net-mvc – MiniProfiler与EF“模型第一”ed
- asp.net-mvc – RenderPartial从另一个控制器(和
- asp.net – 具有管道模式=集成的IIS 7.0不会在AS
- asp.net-mvc – MVC 5实体框架6执行存储过程
- stored-procedures – 使用经典的asp从oracle 11