QueryString и RenderAction - PullRequest
       23

QueryString и RenderAction

1 голос
/ 05 января 2012

Я устанавливаю класс в своем HTML-теге при отправке конкретного аргумента строки запроса, сейчас я делаю это так (главная страница Razor view):

@if (HttpContext.Current.Request.QueryString.AllKeys.Contains("Foo") && HttpContext.Current.Request.QueryString["Foo"] == "Bar") {
  //Do something when Foo=Bar (like http://server/route?Foo==Bar)
  <html class="bar-class">
}
else {
  //Normal html tag
  <html>
}

Работает нормально для обычных запросов, но не тогда, когда я вызываю страницу с помощью RenderAction, например

//Other view, the one requested by the user
@Html.RenderAction("Index", "Route", new {Foo="Bar"})

После некоторого осмотра я понял, что существует только один фактический HttpContext, что означает, что HttpContext.Current указывает на первый запрос. Итак, как мне получить данные строки запроса для подзапроса?

Спасибо! / Victor

Ответы [ 2 ]

0 голосов
/ 30 января 2012

По крайней мере, на данный момент я решил проблему, используя словарь TempData и удаляя значение после использования, но я все еще заинтересован в лучшем решении.Похоже, должен быть способ передать Routedata ...

/ Victor

0 голосов
/ 05 января 2012

Вместо работы со строкой запроса вы можете использовать string в качестве Model.

@model string
@if (!string.IsNullOrWhiteSpace(Model) && Model == "Bar") {
  //Do something when Foo=Bar (like http://server/route?Foo==Bar)
  <html class="bar-class">
}
else {
  //Normal html tag
  <html>
}

public ActionResult Route(string foo){
  return View(foo);
}
...