我嘗試Request.Form.Set(k,v)但它拋出異常集合是隻讀的C#我可以修改Request.Form的變量嗎?
11
A
回答
12
這是完全一樣的修改的Request.QueryString。這兩者在內部都被私有財產所複雜化,可能被認爲是一個錯誤,但是我知道有兩種可能的解決方案(我會忽略掉response.redirect計劃 - 這太可怕了)。
方法之一是使用反射來直接修改集合:
NameValueCollection oQuery = Request.QueryString;
oQuery = (NameValueCollection)Request.GetType().GetField("_queryString",BindingFlags.NonPublic | BindingFlags.Instance).GetValue(Request);
PropertyInfo oReadable = oQuery .GetType().GetProperty("IsReadOnly", BindingFlags.NonPublic | BindingFlags.Instance);
oReadable.SetValue(oQuery, false, null);
oQuery["foo"] = "bar";
oReadable.SetValue(oQuery, true, null);
B計劃,我認爲借自己更好的單元測試是爲了避免與收集直接打交道,而是把它作爲一個的NameValueCollection到任何你想要處理的方法,從你的任何需要的淺拷貝。我自己用它來模擬Web請求。
編輯:馬克Gravell給了B計劃
2
表單是表示客戶端在請求中發送的內容。你想要做什麼?就我個人而言,我會嘗試將「讀取表單」代碼與「用值執行某些操作」代碼分開 - 這樣,您可以儘早進行任何預處理(從表單讀取時),以及以後代碼需要知道什麼是實際上是發送 - 它只需要給它的值(即它不會直接與請求對話)。
如果還意味着您可以測試您的邏輯,而不需要表單,甚至不需要http請求。
其實,ASP.NET MVC會爲你做了很多這方面(上段)...
請注意,您可以更新.Items收集 - 但這是比較模糊一點(即它並不特別涉及表格)。
(歡呼順便說一句固定錯字)
相關問題
- 1. 我可以使用Lua修改內置的Nginx變量嗎?
- 2. 我可以使用變量修改NetLogo命令嗎?
- 3. 我可以從Jekyll內部修改全局Liquid變量嗎?
- 4. 我可以修改settings.py中的static_url嗎?
- 5. 是否可以修改$ _SESSION變量?
- 6. 我可以修改RoR CRUD行爲嗎?
- 7. 我可以修改或擴展ChartJS嗎?
- 8. 可以在枚舉聲明中修改實例變量嗎?
- 9. 可以修改rt.jar嗎?
- 10. 可以修改TWTweetComposeViewController嗎?
- 11. catalina.bat可以更改環境變量嗎?
- 12. 我可以在C#中修改一個Word '97文檔嗎?
- 13. const函數可以在C++中遞歸,只要它修改可變變量?
- 14. sprintf()修改函數中的變量嗎?
- 15. 我可以在Java中更改變量的聲明類型嗎?
- 16. 我可以安全地更改SharedPreferences變量的類型嗎?
- 17. GCC可以修改用於C++特性的C頭文件嗎?
- 18. 我可以爲C中的變量傳遞多個值嗎?
- 19. C#指向變量的指針 - 我可以避免它嗎?
- 20. 我可以修改我的面板的兒童寬度嗎?
- 21. 我可以將HTML放入變量嗎?
- 22. 我可以在HTML.PartialRender()中有變量嗎?
- 23. 我可以修改字段的值以進行測試嗎?
- 24. 我可以修改/刪除可滾動div的滾動條嗎
- 25. 我可以使用ssh shell修改我的openshift git repo嗎?
- 26. 我可以在課堂上修改我的DOM嗎?
- 27. 可以修改UIScrollView的減速率嗎?
- 28. cout可以以某種方式改變變量嗎?
- 29. C#或C++;可以像CE中一樣修改內存嗎?
- 30. R中的函數內部可以修改非全局變量嗎?
更雄辯的理由以這種方式操縱私人的東西絕不是一個建議的事情,應該儘量避免儘可能多地(〜=不惜一切代價)。畢竟他們是有原因的私人的。你會依賴一個特定版本的庫。底層實現的任何更改都可能會破壞您的應用程序。 – 2008-11-30 18:13:23