Как получить полный запрос, который вызывает мой контроллер MVC2? - PullRequest
0 голосов
/ 08 сентября 2010

Вопрос новичка… извините; -)

Мне нужно написать и интегрировать новый веб-сайт в сложное веб-приложение.

Мой новый веб-сайт (MVC2) будет размещаться на отдельном сервере и вызываться только тогда, когда пользователь щелкает ссылку на уже существующем сложном веб-сайте.

Означает, что я (!) Определяю URL, который вызывает мой (!) Новый веб-сайт.

Но «они» (вызывающее, уже существующее, сложное веб-приложение / веб-сайт) добавят атрибут в 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 ]

2 голосов
/ 08 сентября 2010

Вам действительно следует установить URL-адрес и маршрут более похожими на 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 голос
/ 08 сентября 2010

В вашем контроллере у вас все еще есть прямой доступ к объекту Request, поэтому вы можете использовать Request.Url и т. Д.

Это отвечает на ваш вопрос, или вам нужно что-то еще?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...