2013-08-24 256 views
6

部分視圖渲染爲調試模式但不是釋放模式。Nancy Razor部分視圖不在渲染模式下渲染

棧跟蹤

[ArgumentNullException: Value cannot be null. 
Parameter name: key] 
    System.Collections.Concurrent.ConcurrentDictionary`2.GetOrAdd(TKey key, Func`2 valueFactory) +5895838 
    Nancy.ViewEngines.DefaultViewCache.GetOrAdd(ViewLocationResult viewLocationResult, Func`2 valueFactory) +329 
    Nancy.ViewEngines.Razor.RazorViewEngine.GetOrCompileView(ViewLocationResult viewLocationResult, IRenderContext renderContext, Assembly referencingAssembly, Type passedModelType) +186 
    System.Dynamic.UpdateDelegates.UpdateAndExecute5(CallSite site, T0 arg0, T1 arg1, T2 arg2, T3 arg3, T4 arg4) +401 
    CallSite.Target(Closure , CallSite , RazorViewEngine , ViewLocationResult , IRenderContext , Assembly , Object) +575 
    Nancy.ViewEngines.Razor.RazorViewEngine.GetViewInstance(ViewLocationResult viewLocationResult, IRenderContext renderContext, Assembly referencingAssembly, Object model) +1128 
    System.Dynamic.UpdateDelegates.UpdateAndExecute5(CallSite site, T0 arg0, T1 arg1, T2 arg2, T3 arg3, T4 arg4) +401 
    CallSite.Target(Closure , CallSite , RazorViewEngine , ViewLocationResult , IRenderContext , Assembly , Object) +495 
    Nancy.ViewEngines.Razor.<>c__DisplayClass1f.<RenderView>b__1e(Stream stream) +470 
    Nancy.ViewEngines.Razor.HtmlHelpers`1.Partial(String viewName, Object modelForPartial) +1872 
    RazorOutput.RazorView.<Execute>b__3() +632 
    Nancy.ViewEngines.Razor.NancyRazorViewBase`1.ExecuteView(String body, IDictionary`2 sectionContents) +374 
    Nancy.ViewEngines.Razor.<>c__DisplayClass1f.<RenderView>b__1e(Stream stream) +775 
    Nancy.Hosting.Aspnet.NancyHandler.ProcessRequest(HttpContextBase context) +81 
    System.Web.CallHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute() +913 
    System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously) +165 

master.cshtml(相關部分只)

@if (IsSectionDefined("sidebar")) { 
    <div id="two-col"> 
     @RenderBody() 
    </div> 
    <div id="sidebar"> 
     @RenderSection("sidebar") 
    </div> 
} else { 
    <div id="one-col"> 
     @RenderBody() 
    </div> 
} 

index.cshtml

@inherits Nancy.ViewEngines.Razor.NancyRazorViewBase<dynamic> 
@{ Layout = "master.cshtml"; } 

// html for body, doesn't use model 

@section sidebar { 
    @Html.Partial("/sidebars/sidebar.cshtml", Model) 
} 

sidebar.cshtml(樣品部分)

<ul> 
@foreach (var item in Model.Items) 
{ 
    <li>@Html.Raw(@item.DisplayText)</li> 
} 
</ul> 
+0

似乎與發佈模式有關 - 發現此https://groups.google.com/forum/#!searchin/nancy-web-framework/razor/nancy-web-framework/T95zFkxeJjg/LkWguk-xwI8J – Leslie

回答

8

我最近有這個問題,但鏈接到我的主佈局頁面。 看看你的索引頁面,它可以是兩種東西之一,比如我,主頁面的路徑或部分路徑。 如果您刪除了部分網址上的前導斜槓,或者您的母版頁位於共享文件夾中,請將完整路徑添加到其網址(不帶前導斜槓或〜/)。

這是我找到解決方案的地方。 https://groups.google.com/forum/#!topic/nancy-web-framework/zRLth_hl2r8

HTH

+0

謝謝非常!我以爲我嘗試過,但顯然不是。刪除了我的偏見的主要斜線,一切都很好。 :) – Leslie

+0

這很奇怪。對於幾個發佈(對於Azure網站)來說,它一直工作正常。我一直在使用佈局和部分.cshtml文件的相對路徑。證實刪除這些確實解決了這個問題。 – Aaron

1

在我們的情況下,問題是,我們指的是意見失蹤設置:

生成操作:內容

意義在調試模式下的文件是正在從文件系統讀取,但在發佈模式下運行時未被複制到發佈bin文件夾。