尽管它有点 hacky,但有一种方法可以更改 POST 变量的值。
我们可以使用反射将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[] { });
}
我已经在我的机器上测试了代码,它工作正常。但是,我不能提供任何性能或可移植性保证。