无法从_Layout页面使用servicestack razor访问模型/请求数据

Big*_*toe 5 razor c#-4.0 servicestack

我有一个共享的_Layout.cshtml页面,我需要访问调用该页面的服务,或访问请求dto或Model,以便我可以根据调用服务的类型,模型呈现不同的选项类型或请求类型.在_Layout页面中,我似乎无法访问上述任何内容.我对SS-Razor很陌生,可能只是没有看到更大的图片,但这是我到目前为止尝试访问该模型所做的工作.

在_Layout.cshtml中,我定义了以下内容,因此我可以访问ViewBag以及会话信息.

@using ServiceStack.Razor
@inherits ViewPage<ResponseBase>
Run Code Online (Sandbox Code Playgroud)

我也试过了一个简单的视图页面

@inherits ViewPage
Run Code Online (Sandbox Code Playgroud)

这使我可以访问_Layout中的基本页面基础结构.但是布局中的模型总是为空,即使我暂时改变了从ResponseBase类继承的所有响应,并且可以在上面的代码中看到,我继承了所有模型至少具有ResponseBase的页面.

然后我设置了一个全局过滤器,我将请求DTO注入请求项,因为这将是一个开始,并将证明我可以在布局中访问一些信息.所以我将以下内容添加到应用主机,

this.RequestFilters.Add((httpReq, httpResp, requestDto) =>
{
   if(httpReq != null && httpReq.Items != null)
                    httpReq.Items["RequestDto"] = requestDto;
}); 
Run Code Online (Sandbox Code Playgroud)

我可以看到过滤器上有一个断点,可以看到reqestD已被添加到集合中,所以我知道这件作品至少有效.当我尝试使用下面的代码访问_Layout中的requestDto时,Request.Items永远不会包含RequestDto.

@{
    RequestBase myRequest = null;
    if(base.Request != null)
        if(base.Request.Items.ContainsKey("RequestDto"))
            myRequest = (RequestBase)base.Request.Items["RequestDto"];
}
Run Code Online (Sandbox Code Playgroud)

所有这些都是试验和错误,因为在我的生活中,我无法在Razor View页面中设置断点,因此我可以看到那里正在发生的事情.在这个阶段我经历过RazorRockStars样本很多次,并且看不到我在那里尝试做什么的任何例子.

那么有没有人有关于如何解决这个问题的任何指示,示例或建议.随意指出一种完全不同的方法,在_Layout中呈现不同的选项,因为在这个阶段我没有多少头发,我愿意尝试任何事情.

jef*_*art 1

尝试 ServiceStack v3.9.33。myz 修复了剃刀支持中可能与此问题相关的一些内容。