修改 Request.Form["xxx"] 的值

---------------------ASP.NET CORE---------------------

在Core里面 Request.Form["xxx"]="yyy" 是不被允许的,Request.Form["xxx"]被标记为只读,变通的做法是替换IFormCollection:

Dictionary<string, Microsoft.Extensions.Primitives.StringValues> 
dictValues = new Dictionary<string, 
Microsoft.Extensions.Primitives.StringValues>();        
foreach (string key in Request.Form.Keys)
{
  dictValues.Add(key, Request.Form[key]);
}
//在此处修改字典dictValues的值
//dictValues["xxx"] = "yyyy";
FormCollection fc = new FormCollection(dictValues);
Request.Form = fc;

新建一个 FormCollection,替换 Request.Form


---------------------ASP.NET MVC---------------------

通过反射手段在运行时去除Request.Form["xxx"]的只读标记:

Request.Form.GetType().BaseType.BaseType.GetField("_readOnly", 
System.Reflection.BindingFlags.NonPublic | 
System.Reflection.BindingFlags.Instance).SetValue(Request.Form, 
false);            
Request.Form["xxx"] = Description;

    

2021-01-13 ASP.NET CORE

发布评论