1

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は使用されません(同じディレクトリに移動した場合でも)。

これはサポートされていますか?もしそうなら、それはどのように構成されていますか?

4

2 に答える 2

1

最も近い_Layout.cshtmlを自動的に使用します

これがもうサポートされているかどうかわかりません。/Views/Shared/_Layout.shtmlがデフォルトのテンプレートとして使用するファイルのようです。レイアウト/テンプレートページを定義する他のオプションは、上記のように@Layoutまたは@template構文を使用することです。

@RenderBody()はサポートされていません、

正しい。ここに記載されているように、これは意図的なものです。

次に、@ RenderBody()のような魔法のメソッドを使用して、出力BodyofViewを「Body」と呼ばれる変数に出力aを格納する単なる別の変数として扱います。

于 2013-03-26T19:43:44.463 に答える
0

Markdownファイルの先頭に@Layoutディレクティブを含めます。

また、_Layout.cshtmlファイルでは。<!--@Body-->の代わりに使用します@RenderBody()。これを以下に示し、「レイアウト/マスターページのシナリオ-基本」セクションの「マークダウン機能」ページで説明します。

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の例で使用されている2つの関連する規則から逸脱しているため、望ましくありません。

  1. 最も近い_Layout.cshtmlを自動的に使用します
  2. @RenderBody()はサポートされておらず、@ Bodyを使用すると、_Layout.cshtmlを早期にコンパイルしようとすると起動エラーが発生します。
于 2013-03-26T17:34:12.717 に答える