57099
ASP.NET Core3.0とRazorの初学者です。  
現在、WinFormsの自作ControlのようなものをRazorを使ったウェブページ開発でもできないかと考えていろいろと試しています。  
次のような関数を書けば同じRazorファイル内では使いまわしてHTMLの生成ができるということを知りました。

```

    @{
        //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);
        }
    }
    
```

ところが、この関数へ外部からアクセスできないかと考え次のようにpublicにすると「'public'
がこの項目に対して有効ではありません。」というエラーや（@functionsにすると）「現在のコンテクストにbuilderという名前は存在しません」というエラーが出てコンパイルすることができません。

```

    @{
        public void Display(Hoge hoge)
        {
            <p>@hoge.Fuga</p>
        }
    }
    
```

このようにControlのようなものを作ろうとすると以下のサイトで紹介されているようにC#でゴリゴリ書くしかないのでしょうか？  
（@helperはCore3.0ではまだ使用することができなさそうです）  
[参考サイト](https://www.atmarkit.co.jp/fdotnet/aspnetmvc3/aspnetmvc3_07/aspnetmvc3_07_03.html)

あるいは他に関数の中に直接HTMLタグなどを埋め込んで出力できるような関数を実装する方法があるのでしょうか？  
ご教授のほどよろしくお願いします。
CC BY-SA 4.0
2019-07-24T15:14:53.530
56866
2019-08-01T06:58:26.320
35121
question
c# asp.net asp.net-core razor
razorファイル内に書いたHTML生成コードを別のファイルから参照する方法
部分ビューでは実現できないでしょうか？  
hogeの部分にデータがあって、それぞれ表示したいような場合は、下記リンク先の「部分ビューからデータにアクセスする」が参考になりそうです。

[参考：ASP.NET Core の部分ビュー]  
<https://docs.microsoft.com/ja-
jp/aspnet/core/mvc/views/partial?view=aspnetcore-2.2>
CC BY-SA 4.0
2019-08-01T06:58:26.320
57099
2019-08-01T06:58:26.320
30742
56866
answer