7

我正在尝试服务堆栈中的新剃须刀视图内容,我有这个视图:

@inherits ServiceStack.Razor.ViewPage<ServiceStackRazorCrud.Api.UserPageResourceResponse>
@{
    var m = Model;  // <-- I have a breakpoint in this line.
    var req = Request; 
    var res = Response;
}

当我设置断点并运行应用程序(控制台应用程序)时,我可以看到视图已编译,但当我在浏览器中请求视图时调试器不会中断。我认为这是因为视图是在应用程序启动或类似的情况下动态编译的。是否有可能以某种方式让断点工作?

4

1 回答 1

3

AFAIK 无法以这种方式调试视图(目前使用 3.9.43,我相信更高版本对编译错误有更好的诊断)。

尝试保持视图代码简单,仅限于简单的循环/渲染,并在 DTO 上使用扩展方法进行任何复杂的逻辑/处理,这确实允许调试。您还可以考虑使用logging或简单的 Debug 扩展方法:

using ServiceStack.Html;
public static class HtmlHelperExtensions
{
    public static bool IsDebug(this HtmlHelper htmlHelper)
    {
    #if DEBUG
        return true;
    #else
        return false;
    #endif
    }
}

@using ServiceStack.Text
@inherits ServiceStack.Razor.ViewPage<ServiceStackRazorCrud.Api.UserPageResourceResponse>
@{
    var m = Model;  
}

@if (this.Html.IsDebug())
{
    <div class="debug">@(this.Model == null ? "m == null" : Model.Dump())</div>
}
于 2013-05-30T19:51:55.450 回答