大佬教程收集整理的这篇文章主要介绍了ModelBinding:MVC4 / C中的POST数据(可能来自Ruby)#,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
POST /1ffaj2f1 http/1.1 X-Chargify-Webhook-Signature: 526ccfd9677668674eaa6ba5d447e93a X-Chargify-Webhook-Id: 11238622 User-Agent: Ruby Host: requestb.in Content-Type: application/x-www-form-urlencoded Content-Length: 5159 Connection: close Accept-Encoding: gzip,deflate Accept: */*; q=0.5,application/xml id=11238622&event=payment_success&payload[subscription][activated_at]=2013-05-22%2001%3A25%3A20%20-0400&payload[subscription][balance_in_cents]=0&...
问题是在.NET端,默认模型绑定器不喜欢方括号[],而是期望子对象以点分表示法分隔,如a.b.c.d = value
我有什么选择让模型绑定器工作?我能想到以下几点:
>使用委托处理程序挂钩请求,读取req主体并将[]替换为点(.).然而,这至少让人感到有点冒险
>编写一个可以与[]一起使用的自定义模型绑定器 – 希望能够以某种方式委托给默认处理程序.不知道如何解决这个问题 – 但很想听到一些想法.
>只需在Action中使用formcollection param即可.处理表单集合键以基于键形成递归字典.这也意味着我必须处理整个字符串(日期,ids等等)
什么是最好的方式,我该如何去做.
还要注意 – 在MVC中没有委托处理程序 – 这是WebApi的东西(其中一些东西只是为了让你误入歧途!)
基本上,在Stream上写了一个装饰器来读取输入流,用点替换方括号,然后将其存储在另一个流中.
在Application_Beginrequest中检查是否输入请求是否为“正确”控制器,如果是,则创建装饰器实例并将其设置为request.Filter.
[更新 – 2013.08.19]:正如@L_772_15@中@benpage所述,我们还需要原始的未经修改的SHA256验证流.我最终从装饰器中暴露了未修改的流内容,并向下转换控制器中的request.InputStream属性,以获取未修改的内容以进行签名验证.
以上是大佬教程为你收集整理的ModelBinding:MVC4 / C中的POST数据(可能来自Ruby)#全部内容,希望文章能够帮你解决ModelBinding:MVC4 / C中的POST数据(可能来自Ruby)#所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。