C#可以修改Request.Form的变量吗?我试过Request.Form.Set(k,v)但它抛出exceptionCollectionisreadonly这与修改Request.Querystring完全相同。两者都是内部复杂的私有属性,可以被视为错误,但我知道有两种可能的解决方案(我会拒绝回应。直接计划失控-这太可怕了)。第一种方法是使用反射直接修改集合:NameValueCollectionoQuery=Request.QueryString;oQuery=(NameValueCollection)Request.GetType().GetField("_queryString",BindingFlags.NonPublic|BindingFlags.Instance).GetValue(请求);PropertyInfooReadable=oQuery.GetType().GetProperty("IsReadOnly",BindingFlags.NonPublic|BindingFlags.Instance);oReadable.SetValue(oQuery,false,null);oQuery["foo"]="bar";oReadable.SetValue(oQuery,true,null);B计划,我认为更适合单元测试,是避免直接处理集合,而是将其作为NameValueCollection传递给您想要处理它的任何方法,浅复制任何您需要的东西。我自己用它来模拟网络请求。编辑:MarcGravell为B计划提供了一个更有说服力的案例。该表格表示客户端在请求中发送的内容。你想做什么?就个人而言,我会尝试将“读取表单”代码与“使用值处理”代码分开-这样您就可以尽早(从表单读取时)进行任何预处理,而不是后者代码需要知道什么是实际发送-它只需要分配给它的值(即它从不直接与请求对话)。如果还意味着您可以在没有表单甚至根本没有http请求的情况下测试您的逻辑。实际上,ASP.NETMVC会为您做很多这样的事情(上一段)...请注意,您可以更新.Items集合——但这有点含糊(即它与表单没有特别相关)。(为打错字喝彩)以上是C#学习教程:C#CanImodifythevariablesofRequest.Form?如果所有分享的内容对你有用,需要进一步了解C#学习教程,希望大家多多关注。本文收集自网络,不代表立场。如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处:
