我正在尝试在C#中使用Classic ASP Intrinsic对象。通过使用ASPTypeLibrary。
我想将经典ASP请求对象Request.QueryString
和Request.Form
转换为NameValueCollections。
我该怎么做?
答案 0 :(得分:0)
我想将Request.QueryString和Request.Form对象转换为NameValueCollections。我怎么能这样做?
它们的返回类型都是NameValueCollection
:
public NameValueCollection QueryString { get; }
public NameValueCollection Form { get; }
您可以简单地预约它们,例如:
PrintKeysAndValues(Request.Form);
PrintKeysAndValues(Request.Request);
public static void PrintKeysAndValues( NameValueCollection myCol ) {
Console.WriteLine( " KEY VALUE" );
foreach ( String s in myCol.AllKeys )
Console.WriteLine( " {0,-10} {1}", s, myCol[s] );
Console.WriteLine();
}
所以你不需要转换它们。
答案 1 :(得分:0)
你是什么意思"转换"?这两个属性都是 NameValueCollections
:
HttpRequest.Form
是表单变量的NameValueCollection
。如果页面是使用HTTP动词POST
发布的,则数据来自请求正文;如果页面是使用HTTP动词GET
发布的,则数据来自查询字符串。
HttpRequest.QueryString
是从{等待它} NameValueCollection
形式的查询字符串中获取的...?key1=value1&key1=value1&...
个键/值对。任何重复的键都会导致值被连接成一个单独的字符串,每个单独的值用逗号分隔:...?foo=1&foo=2&foo=3
将导致键foo
具有值1,2,3
。
但是,应该注意,对于查询字符串,HTTP协议不会对查询字符串语法施加任何特定限制:?
之后的URI中的所有内容(直到第一个{{1}指示片段的开头,或者URI的结尾,以先到者为准)是查询:它的解释完全取决于权限< / em>它的URI。可悲的是,微软的#
课程为您做出决定。
答案 2 :(得分:0)
旧帖子,但也许有人仍需要对此进行回答,以及如何从ScriptingContext
访问不同的内容。我花了将近一年的时间才弄清楚它是如何运作的......
此代码适用于我QueryString
。在示例中,我再次将其构建为完整的字符串:
foreach (var item in _scriptContext.Request.QueryString)
{
foreach (var q in _scriptContext.Request.QueryString[item])
qs += item + "=" + q + "&";
}
if (qs.EndsWith("&")) qs = qs.Substring(0, qs.Length - 1);
在此背景下获取ServerVariables
:
var uri = "";
foreach (var item in _scriptContext.Request.ServerVariables["URL"])
uri = item.ToString();
Application
和Session
返回内容直接:
var app_var = _scriptContext.Application["application_var"]
var sess_var = _scriptContext.Session["session_var"]
读取cookie的方式如下:
dynamic value = (IReadCookie)_scriptContext.Request.Cookies["cookieName"];
var yourCookie = value.Item().ToString();