如何获得调用我的MVC2控制器的完整请求?

时间:2010-09-08 15:08:48

标签: asp.net-mvc-2

新手问题...对不起; - )

我必须编写并在复杂的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, "");
        }
      }
    }

2 个答案:

答案 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等。

这是回答你的问题,还是你需要的其他东西?