【问题标题】:How to debug a view error in NancyFx?如何调试 NancyFx 中的视图错误?
【发布时间】:2017-12-27 06:29:06
【问题描述】:

我有一个项目,我正在从 ASP.Net MVC 移植一些代码以改用 Nancy。我将继续在新项目中将 Razor 用于视图引擎。我的一个观点是给我以下例外:

RuntimeBinderException: Cannot perform runtime binding on a null reference
at CallSite.Target(Closure , CallSite , Object )
at System.Dynamic.UpdateDelegates.UpdateAndExecute1[T0,TRet](CallSite site, T0 arg0)
at RazorOutput.RazorView.Execute()
at Nancy.ViewEngines.Razor.NancyRazorViewBase`1.ExecuteView(String body, IDictionary`2 sectionContents)
at CallSite.Target(Closure , CallSite , Object , Object , Object )
at System.Dynamic.UpdateDelegates.UpdateAndExecuteVoid3[T0,T1,T2](CallSite site, T0 arg0, T1 arg1, T2 arg2)
at CallSite.Target(Closure , CallSite , Object , Object , Object )
at Nancy.ViewEngines.Razor.RazorViewEngine.<>c__DisplayClass27.<RenderView>b__26(Stream stream)
at Nancy.ViewEngines.Razor.HtmlHelpers`1.Partial(String viewName, Object modelForPartial)
at RazorOutput.RazorView.Execute()
at Nancy.ViewEngines.Razor.NancyRazorViewBase`1.ExecuteView(String body, IDictionary`2 sectionContents)
at CallSite.Target(Closure , CallSite , Object , Object , Object )
at System.Dynamic.UpdateDelegates.UpdateAndExecuteVoid3[T0,T1,T2](CallSite site, T0 arg0, T1 arg1, T2 arg2)
at Nancy.ViewEngines.Razor.RazorViewEngine.<>c__DisplayClass27.<RenderView>b__26(Stream stream)
at Nancy.Responses.MaterialisingResponse.PreExecute(NancyContext context)

现在,从某种意义上说,这是一个很容易修复的错误:只是防止 null 被尊重,对吗?我遇到的问题是我不知道我的模型的哪些部分并认为它有问题。所以我要问的是,是否有办法从南希那里得到更好的错误信息?如果我能让它告诉我视图中的行号,或者它无法绑定的空对象的名称,那将大大简化调试。

【问题讨论】:

    标签: c# razor nancy


    【解决方案1】:

    我希望这会比 RazorEngine 更好,但我发现 NancyFx 也有同样的弱点。看到这在 2017 年仍然是常见的剃刀事件,真是令人失望......

    我的技巧是为源文件名和行号添加一个属性,并添加代码以手动更新它们。真的很难看,而且数字不是对实际行号的引用,而只是文件中的唯一标识符,但它确实为您提供了更多本地化信息。

    @{ Model.LineNumber = "62"; } <div>@Model.Example</div>
    

    我很想知道是否有人在任何可以在 HttpContext 之外运行的 Razor 解决方案中找到更好的解决方案。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-01-11
      • 1970-01-01
      • 2017-04-02
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多