我正在使用ServiceStack Markdown Razor渲染DTO,但它没有使用_Layout.cshtml。我遵循惯例,其中Markdown文件的名称与响应类型相同。
我的源代码树如下所示:
Services/
ExampleService.cs
Transfer/
Example.cs
Views/
Shared/
_Layout.cshtml
Example.md
ExampleService.cs
public class ExampleService : IService
{
public Example Get(ExampleRequest request)
{
return new Example { Greeting = "Hello, MD!" };
}
}
因此,如果我访问.../html/reply/ExampleRequest
,我会看到呈现的Markdown可以访问@Model
。但是,它不使用可用的_Layout.cshtml(即使我将它移动到同一目录)。
支持吗?如果是这样,它是如何配置的?
答案 0 :(得分:1)
自动使用最近的_Layout.cshtml
我不知道这是否再受支持了。看来/Views/Shared/_Layout.shtml是用作默认模板的文件。定义布局/模板页面的另一个选项是使用上面提到的@Layout或@template语法。
不支持@RenderBody(),
正确。这是故意的here
而不是使用像@RenderBody()这样的魔术方法,我们将输出视图视为另一个将输出a存储在名为“Body”的变量中的变量。
答案 1 :(得分:0)
在Markdown文件的顶部包含 @Layout 指令。
此外,在_Layout.cshtml文件中使用<!--@Body-->
而不是@RenderBody()
。这显示如下,并在Markdown Features页面的“布局/主页方案 - 基础知识”部分下进行了描述。
<强> Example.md 强>
@Layout Views/Shared/_Layout.cshtml
## @Model.Greeting
It is the year @DateTime.Now.Year
<强> _Layout.cshtml 强>
<!doctype html>
<html lang="en-us">
<head>
<title>Markdown Razor Example</title>
</head>
<body>
<!--@Body-->
</body>
</html>
<强>编辑强>
尽管如此,这种方法是不可取的,因为它偏离RazorRockstars示例中使用的两个相关约定: