Как убедиться, что HTTPContext имеет значение? - PullRequest
0 голосов
/ 01 октября 2009

Я строю версию витрины MVC. У меня есть две темы, одна - стандартный пользовательский интерфейс, а другая - пользовательский интерфейс администратора. У меня есть несколько методов HTML Helper, которые доставляют файлы .ascx в файлы .aspx, как в примере, но без плагинов. Все вещи работают на тему по умолчанию, но ни одна из них не работает в теме администратора. Я всегда получаю ту же ошибку, когда Html.SimpleActivityTypeList () срабатывает. Html.RenderPartial («AdminLeftNav») всегда будет работать нормально.

<asp:Content ID="Content3" ContentPlaceHolderID="NavContent" runat="server">
    <% Html.SimpleActivityTypeList(); %>
    <% Html.RenderPartial("AdminLeftNav"); %>
</asp:Content>

Я добавил метод, как показано ниже, в класс расширения.

public static void SimpleActivityTypeList(this HtmlHelper helper)
    {
        helper.RenderAction<CatalogController>(x => x.SimpleActivityTypeList());
     }

И, как я уже сказал, это прекрасно работает в теме по умолчанию. Пожалуйста, помогите?

Stack Trace: 


[ArgumentNullException: Value cannot be null.
Parameter name: httpContext]
   System.Web.Routing.RequestContext..ctor(HttpContextBase httpContext, RouteData routeData) +85
   Microsoft.Web.Mvc.ViewExtensions.RenderRoute(HtmlHelper helper, RouteValueDictionary values) +367
   Microsoft.Web.Mvc.ViewExtensions.RenderAction(HtmlHelper helper, Expression`1 action) +113
   GrandGuide.Web.CMSExtensions.SimpleActivityTypeList(HtmlHelper helper) in C:\S3_Depot\S3_Dev\GrandGuide\GrandGuide.Web\Infrastructure\Helpers\CMSExtensions.cs:55
   ASP.views_themes_admin_index_aspx.__RenderContent3(HtmlTextWriter __w, Control parameterContainer) in c:\S3_Depot\S3_Dev\GrandGuide\GrandGuide.Web\Views\Themes\Admin\Index.aspx:7
   System.Web.UI.Control.RenderChildrenInternal(HtmlTextWriter writer, ICollection children) +256
   System.Web.UI.Control.RenderChildren(HtmlTextWriter writer) +19
   System.Web.UI.Control.Render(HtmlTextWriter writer) +10
   System.Web.UI.Control.RenderControlInternal(HtmlTextWriter writer, ControlAdapter adapter) +27
   System.Web.UI.Control.RenderControl(HtmlTextWriter writer, ControlAdapter adapter) +99
   System.Web.UI.Control.RenderControl(HtmlTextWriter writer) +25
   ASP.views_themes_admin_theme_master.__Render__control1(HtmlTextWriter __w, Control parameterContainer) in c:\S3_Depot\S3_Dev\GrandGuide\GrandGuide.Web\Views\Themes\Admin\Theme.Master:33
   System.Web.UI.Control.RenderChildrenInternal(HtmlTextWriter writer, ICollection children) +256
   System.Web.UI.Control.RenderChildren(HtmlTextWriter writer) +19
   System.Web.UI.Control.Render(HtmlTextWriter writer) +10
   System.Web.UI.Control.RenderControlInternal(HtmlTextWriter writer, ControlAdapter adapter) +27
   System.Web.UI.Control.RenderControl(HtmlTextWriter writer, ControlAdapter adapter) +99
   System.Web.UI.Control.RenderControl(HtmlTextWriter writer) +25
   System.Web.UI.Control.RenderChildrenInternal(HtmlTextWriter writer, ICollection children) +134
   System.Web.UI.Control.RenderChildren(HtmlTextWriter writer) +19
   System.Web.UI.Page.Render(HtmlTextWriter writer) +29
   System.Web.Mvc.ViewPage.Render(HtmlTextWriter writer) +71
   System.Web.UI.Control.RenderControlInternal(HtmlTextWriter writer, ControlAdapter adapter) +27
   System.Web.UI.Control.RenderControl(HtmlTextWriter writer, ControlAdapter adapter) +99
   System.Web.UI.Control.RenderControl(HtmlTextWriter writer) +25
   System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +1266

1 Ответ

0 голосов
/ 02 октября 2009

Дополнительная информация поможет. В прошлом я использовал:

if (null != HttpContext)

или, если вы обращаетесь к чему-либо в контексте, например к переменной сеанса:

if (null != HttpContext.Current.Session["my_var"])
...