C# 如何从ServiceStack服务返回没有布局的视图结果?
我有一个C# 如何从ServiceStack服务返回没有布局的视图结果?,c#,razor,
servicestack,C#,Razor,
servicestack,我有一个ServiceStackService实现,它定义了一个方法,该方法必须返回HTML标记,但只返回一个片段。我试图只设置HttpResult对象的View属性,而不在Razor视图中指定布局,也没有设置结果的Template属性,我希望只获得视图标记,但事实并非如此 该视图源自ViewPage。服务功能看起来像 public class SampleService : Service { public IHttpResult Get(GetSampleRequest reques
ServiceStack
Service
实现,它定义了一个方法,该方法必须返回HTML
标记,但只返回一个片段。我试图只设置HttpResult
对象的View
属性,而不在Razor
视图中指定布局,也没有设置结果的Template
属性,我希望只获得视图标记,但事实并非如此
该视图源自ViewPage
。服务功能看起来像
public class SampleService : Service
{
public IHttpResult Get(GetSampleRequest request)
{
return new HttpResult
{
View = "SampleView"
};
}
}
问题是ServiceStack
试图找到一个默认布局(它存在)并使用它。我怎样才能防止呢?在ASP.NETMVC中,我通常只返回Partial
扩展方法的结果;ServiceStack
中是否存在类似的内容?在Razor视图中,添加
@{ Layout = null; }
您需要在Razor视图中将
布局定义为空
但是,将其设置为null
只是默认使用\u Layout.cshtml
页面(或任何定义为默认的页面)
在Razor视图中,将布局设置为”
,如下所示:
@{
Layout = "";
}
您还可以设置Layout=string.Empty
。两者都有相同的预期效果
希望这有帮助!:) 您还可以设置一个不包含任何内容或仅包含注释的布局,以表明它是故意的“\u layoutpempty.cshtml”
。与空字符串名称相比,这是一种设计选择。在您返回的视图中,您是否尝试定义布局=“”
?e、 g.@{Layout=”“;}
@GeoffJames噢,天哪。。。就这么简单(;AFAIK,将布局设置为null
,只定义没有指定布局,并默认为\u Layout.cshtml
如果我们想要呈现没有菜单等的对话框内容,我们在MVC中使用此语句。这似乎是可行的。@GeoffJamesExactly@GeorgPatscheider-我同意你,在一个开箱即用的MVC项目中ect我发现情况就是这样。但从我所能看出,在ServiceStack中,当布局
为null
时,将使用默认布局页面。即,在视图中将其设置为null
,或者根本不定义它