servicestack,Razor,Markdown,servicestack" /> servicestack,Razor,Markdown,servicestack" />

基于DTO类型的Razor标记未使用_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

我使用ServiceStack Markdown Razor来渲染DTO,但它没有使用_Layout.cshtml。我遵循的约定是,标记文件的名称与响应类型相同

我的源代码树如下所示:

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.cshtml
  • @RenderBody()不受支持,在尝试提前编译_Layout.cshtml时,使用@Body会导致启动错误

  • 在标记文件的顶部包括一个@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.cshtml
  • @RenderBody()不受支持,在尝试提前编译_Layout.cshtml时,使用@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”的变量中。

    自动使用最近的布局。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来避免启动错误吗?是的,因为布局是显式指定的,它可以被命名为任何名称。。。因此,您是对的,这将减轻错误。唉,这将是又一个被忽视的惯例。