gpt4 book ai didi

asp.net - 我可以在不重新 POST 的情况下更改 POST 值的值吗?

转载 作者:行者123 更新时间:2023-12-04 16:41:50 25 4
gpt4 key购买 nike

这是在 IIS 6 世界中使用 ASP.NET 2.0。

我有一个用户提交一个表单,该表单通过 POST 发送数据。接收数据的页面会做一些简单的验证。如果验证通过,则会运行一个黑盒代码例程,该例程基本上使用 Request.Form("NameHere") 读取数据。

我希望能够更改 POST 项目的值,然后将其放回 POST。我无法修改读取 Request.Form("NameHere") 的代码,所以我的工作思路是在页面加载事件期间修改数据。如果我更改 POST 项目的值,则不必修改黑盒代码。

是否可以更改 HTTP POST 上项目的值?

有没有人做过这个?

谢谢!

最佳答案

尽管它有点老套,但有一种方法可以更改 POST 变量的值。

我们可以使用 Reflection 来标记 Request.Form集合为非只读,将值更改为我们想要的值并将其再次标记为只读(以便其他人无法更改值)。使用以下函数:

protected void SetFormValue(string key, string value)
{
var collection = HttpContext.Current.Request.Form;

// Get the "IsReadOnly" protected instance property.
var propInfo = collection.GetType().GetProperty("IsReadOnly", BindingFlags.Instance | BindingFlags.NonPublic);

// Mark the collection as NOT "IsReadOnly"
propInfo.SetValue(collection, false, new object[] { });

// Change the value of the key.
collection[key] = value;

// Mark the collection back as "IsReadOnly"
propInfo.SetValue(collection, true, new object[] { });
}

我已经在我的机器上测试了代码,它工作正常。但是,我不能提供任何性能或便携性保证。

关于asp.net - 我可以在不重新 POST 的情况下更改 POST 值的值吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1323130/

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