如何从ServiceStack服务返回没有布局的视图结果?

时间:2016-08-17 12:20:51

标签: c# razor servicestack

我有一个ServiceStackService实现,它定义了一个必须返回HTML标记但只包含片段的方法。我试图只设置View对象的HttpResult属性而不指定Razor视图中的布局,也不设置结果的Template属性 - 我期望只获得视图标记,但情况并非如此。

该视图源自ViewPage。服务功能看起来像......

public class SampleService : Service
{
    public IHttpResult Get(GetSampleRequest request)
    {
        return new HttpResult
        {
            View = "SampleView"
        };
    }
}

问题是ServiceStack尝试找到默认布局(存在)并使用它。我怎么能防止这种情况?在ASP.NET MVC中,我通常只返回Partial扩展方法的结果; ServiceStack中是否存在类似的内容?

3 个答案:

答案 0 :(得分:3)

您需要在剃刀视图中将Layout定义为空。

但是,将其设置为null只是默认使用_Layout.cshtml页面(或任何定义为默认值的页面)。

在您的剃刀视图中,将Layout设置为"",如下所示:

@{
    Layout = "";
 }

您也可以设置Layout = string.Empty。两者都有相同的预期效果。

希望这有帮助! :)

答案 1 :(得分:2)

您还可以设置一个不包含任何内容或仅包含注释的布局,以表明它是蓄意的"_LayoutEmpty.cshtml"。一种设计选择与一个空字符串名称。

答案 2 :(得分:0)

在Razor View中,添加

@{ Layout = null; }