お米 is ライス

C#やらUnityやらを勉強していて、これはメモっといたほうがええやろ、ということを書くつもりです

ASP.NET Core 3.0+RazorでHTMLを描画する関数を作る方法

@helperとかHtmlHelperとかIHtmlContentとかいろいろ惑わされたのだけど、次のようにするとよさそう。

hoge.razor

@{
    //Hogeを表示する関数を定義する
    void Display(Hoge hoge)
    {
        <p>@hoge.Fuga</p>
    }
}

<p>Hello world</p>
<p>following is hoge list</p>
@{
    //定義した関数を使う側
    foreach(var hoge in hogeList)
    {
        Display(hoge);
    }
}

この書き方は以下のgithubのissueに書いてあった。
github.com

問題はこれをよそのrazorファイルから呼び出せるかだが、まあ大丈夫でしょう(まだ試してない)

追記

試しにDisplay関数をpublicにしたりpublic static にしたりしましたがエラーが出てコンパイルできないようです。
privateやprotectedでも同じことを言われるのでそもそもこれはrazor独特の書き方であり普通のC#と一緒には考えられなさそうです。