2013-08-24 4 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

最近この問題が発生しましたが、マスターレイアウトページにリンクしました。 インデックスページを見ると、私のように、マスターページへのパス、またはあなたの部分へのパスの2つのうちの1つになります。 部分URLの先頭のスラッシュを削除した場合、またはマスターページが共有フォルダにある場合は、URLにフルパスを追加してください(スラッシュまたは〜/を付けないでください)。

これは私が解決策を見つけた場所です。 https://groups.google.com/forum/#!topic/nancy-web-framework/zRLth_hl2r8

HTH

+0

ありがとうそんなに!私はそれを試みたと思ったが、明らかにそうではなかった。私の部分的な部分に先行するスラッシュを削除し、すべてが順調です。 :) – Leslie

+0

これは奇妙です。いくつかのパブリッシュ(AzureのWebサイト)でうまくいきました。私はレイアウトと部分的な.cshtmlファイルへの相対パスを使用していました。これらを削除すると問題が解決されたことを確認しました。 – Aaron

1

我々の場合には、問題は、我々が参照したビューは、設定を欠落していたということでしたが:

ビルドアクション:ファイルがあっデバッグモードでのコンテンツ

意味ファイルシステムから読み取られていますが、リリースモードで実行されている場合はリリースビンフォルダにコピーされていませんでした。

関連する問題