新手问题...对不起; - )
我必须编写并在复杂的Web应用程序中集成新网站。
我的新(MVC2)网站将托管在一个单独的服务器上,只有在用户点击现有复杂网站中的链接时才会调用。
表示我(!)定义调用我的(!)新网站的URL。
但是“他们”(调用的,已存在的,复杂的Web应用程序/网站)将为该URL添加一个属性。该属性是sessionID。
好的,我想我已经理解这会调用我的(MVC2)控制器。
但是如何在我的(MVC2)控制器中获取“调用URL”(包括添加的sessionID)?
希望有人理解我的要求; - )
提前致谢!
我想分享我的小解析器 - 希望它可以帮助某人。 ; - )
还请求
(Request.Url.Query =) "?sessionID=12345678901234567890123456789012&argumentWithoutValue&x=1&y&z=3"
将被很好地解析。 这是我的代码:
Hashtable attributes = new Hashtable();
string query = Request.Url.Query;
string[] arrPairs = query.Split('&'); // ...?x=1&y=2
if (arrPairs != null)
{
foreach(string s in arrPairs)
{
if (!String.IsNullOrEmpty(s))
{
string onePair = s.Replace("?", "").Replace("&", "");
if (onePair.Contains("="))
{
string[] arr = onePair.Split('=');
if (arr != null)
{
if (arr.Count() == 2)
{
attributes.Add(arr[0], arr[1]);
}
}
}
else
{
// onePair does not contain a pair!
attributes.Add(onePair, "");
}
}
}
答案 0 :(得分:2)
你真的应该将你的URL和Route设置为更像MVC。您正在呼叫的URL应为:
newapp/controller/action/sessionId
然后设置你的路线:
routes.MapRoute(
"sessionId",
"{controller}/{action}/{sessionId}",
new { controller = "controller", action = "action", sessionId = 0 });
然后在你的控制器中:
public ActionResult Action(int sessionId)
{
}
答案 1 :(得分:1)
在您的控制器中,您仍然可以直接访问Request对象,因此您可以使用Request.Url等。
这是回答你的问题,还是你需要的其他东西?