我正试图了解ServiceStack 自托管应用和新API。
在单独的文件夹中添加两个相同名称的视图会导致启动时出错。这是不允许的吗?
Foo\
Index.cshtml
Bar\
Index.cshtml
有没有办法通过方法上的装饰器指定模板或直接作为返回值?我知道在DTO之后命名视图的惯例。我更喜欢更明确或遵循更接近Sinatra / Express的惯例。
return Render(typeof(Views.Foo.Index), new { Name = "Nelly" });
答案 0 :(得分:1)
ServiceStack的Razor Rockstars website包含ServiceStack中Razor支持的文档,列出了一些选择不同模板的选项:
如果它不遵循约定(即请求或响应DTO名称),那么您可以通过返回装饰HttpResult
来动态指定使用哪个视图或布局模板:
return new HttpResult(dto) {
View = {viewName},
Template = {layoutName},
};
如果您正在使用静态视图(即服务始终使用相同的视图),那么您可以通过使用[DefaultView]
属性
[DefaultView("Rockstars")]
public object Get(Rockstars request) {
...
return responseDto;
}
在任何一种情况下,如果你想要强类型,你可以使用像typeof(RequestDto).Name
这样的东西。
与MVC不同,heirachy不会影响ServiceStack中的视图选择,因为每个查看页面(即/Views
文件夹中的剃刀页面)必须是唯一的,您可以自由地放置它们在你想要的任何平面或嵌套文件夹结构中。