基于DTO类型的Razor标记未使用_Layout.cshtml
我使用ServiceStack Markdown Razor来渲染DTO,但它没有使用_Layout.cshtml。我遵循的约定是,标记文件的名称与响应类型相同 我的源代码树如下所示:基于DTO类型的Razor标记未使用_Layout.cshtml,razor,markdown,servicestack,Razor,Markdown,servicestack,我使用ServiceStack Markdown Razor来渲染DTO,但它没有使用_Layout.cshtml。我遵循的约定是,标记文件的名称与响应类型相同 我的源代码树如下所示: Services/ ExampleService.cs Transfer/ Example.cs Views/ Shared/ _Layout.cshtml Example.md ExampleService.cs public class ExampleServ
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
,我会看到呈现的标记,它可以访问@Model
。但是,它没有使用可用的_Layout.cshtml(即使我将其移动到同一目录)
这是否得到支持?如果是,它是如何配置的?在标记文件的顶部包括一个@Layout指令 另外,在_Layout.cshtml文件中,使用
而不是@RenderBody()
。这一点如下所示,并在“布局/母版页场景-基础”一节的页面上进行了描述
示例.md
@Layout Views/Shared/_Layout.cshtml
## @Model.Greeting
It is the year @DateTime.Now.Year
\u Layout.cshtml
<!doctype html>
<html lang="en-us">
<head>
<title>Markdown Razor Example</title>
</head>
<body>
<!--@Body-->
</body>
</html>
Markdown剃须刀示例
社论
<!doctype html>
<html lang="en-us">
<head>
<title>Markdown Razor Example</title>
</head>
<body>
<!--@Body-->
</body>
</html>
也就是说,这种方法是不可取的,因为它偏离了示例中使用的两个相关约定:
在标记文件的顶部包括一个@Layout指令 另外,在_Layout.cshtml文件中,使用
而不是@RenderBody()
。这一点如下所示,并在“布局/母版页场景-基础”一节的页面上进行了描述
示例.md
@Layout Views/Shared/_Layout.cshtml
## @Model.Greeting
It is the year @DateTime.Now.Year
\u Layout.cshtml
<!doctype html>
<html lang="en-us">
<head>
<title>Markdown Razor Example</title>
</head>
<body>
<!--@Body-->
</body>
</html>
Markdown剃须刀示例
社论
<!doctype html>
<html lang="en-us">
<head>
<title>Markdown Razor Example</title>
</head>
<body>
<!--@Body-->
</body>
</html>
也就是说,这种方法是不可取的,因为它偏离了示例中使用的两个相关约定:
自动使用最近的布局。cshtml
<!doctype html>
<html lang="en-us">
<head>
<title>Markdown Razor Example</title>
</head>
<body>
<!--@Body-->
</body>
</html>
我不知道这是否还被支持。似乎/Views/Shared/_Layout.shtml是要用作默认模板的文件。定义布局/模板页面的另一个选项是使用上面提到的@layout或@template语法
@RenderBody()不受支持,
对。如前所述,这是故意的
我们不使用像@RenderBody()这样的神奇方法,而是将视图的输出主体视为另一个变量,将输出a存储在一个名为“Body”的变量中。自动使用最近的布局。cshtml
<!doctype html>
<html lang="en-us">
<head>
<title>Markdown Razor Example</title>
</head>
<body>
<!--@Body-->
</body>
</html>
我不知道这是否还被支持。似乎/Views/Shared/_Layout.shtml是要用作默认模板的文件。定义布局/模板页面的另一个选项是使用上面提到的@layout或@template语法
@RenderBody()不受支持,
对。如前所述,这是故意的
我们不使用像@RenderBody()这样的神奇方法,而是将视图的输出体视为另一个变量,将输出a存储在一个名为“Body”的变量中。您可以使用default.shtml(与_Layout.cshtml具有相同的内容)而不是_Layout.cshtml来避免启动错误吗?是的,因为布局是显式指定的,它可以被命名为任何东西。。。因此,您是对的,这将减轻错误。唉,这将是另一个被忽略的约定。您可以使用default.shtml(与_Layout.cshtml具有相同的内容)而不是_Layout.cshtml来避免启动错误吗?是的,因为布局是显式指定的,它可以被命名为任何名称。。。因此,您是对的,这将减轻错误。唉,这将是又一个被忽视的惯例。