Недавно я столкнулся с проблемой, когда значение было null при доступе с помощью Request.Form, но отлично, если было получено с помощью Request.Params. Каковы различия между этими методами, которые могут вызвать это?
Когда меняются Request.Params и Request.Form?
Ответ 1
Request.Form включает только переменные, отправленные через форму, в то время как Request.Params включает в себя как опубликованные переменные формы, так и переменные, заданные в качестве параметров URL.
Ответ 2
Request.Params содержит комбинацию QueryString, Form, Cookies и ServerVariables (добавляется в этом порядке).
Разница в том, что если у вас есть переменная формы, называемая "ключ1", которая находится как в QueryString, так и в Form, тогда Request.Params [ "key1" ] вернет значение QueryString и Request.Params.GetValues ( "key1" ) вернет массив из [querystring-value, form-value].
Если имеется несколько значений формы или файлов cookie с тем же ключом, то эти значения будут добавлены в массив, возвращаемый GetValues (т.е. GetValues не вернет зубчатый массив)
Ответ 3
Причина в том, что значение, которое я извлекал, было из элемента формы, но передача была выполнена через ссылку + JQuery, а не через кнопку формы.