朧の.Netの足跡
問合せ先:support@oborodukiyo.info サイト内検索はこちら
ASP.NET MVCでビューにおいて複数のデータを渡したい時





ビューに渡すデータやリストは一つだけの場合が多いと思いますが、では複数渡したい時はどうすればいいでしょうか?
表示だけの場合はTupleを利用して複数のデータを持たせればよいです。
foreach文とかを利用したい時はToListメソッドを利用してList型をTupleに持たせるとよいです。

でも、Tupleではダメな時があります。
それは、Razor構文でのHtml.TextBoxFor等を使うときは、そのビューに渡したいデータをプロパティで保持するクラスを作って、それをビューに渡すとよい。

Tupleの場合

Tupleクラスを使う場合は、データを渡すコントローラ側で変数にvarを使わずに、型を明記した方がエラーがあった時にわかりやすいと思います。
また、ビュー側でforeach文を使いたい場合には、データをToList()メソッドでListクラスにした方がいいです。
ビュー側ではModelがnullのことがある場合があるので、if文でModelがnullでないことを調べたほうがよいです。

コントローラー側

            //データの取得
            var data1 = db.Table1.ToList<Models.class1>();
            var data2 = db.Table2.ToList<Models.class2>();
            //タプルにしてデータを渡すための変数
            //型は明記したほうがいいのかなと自分では思います。
            //その方がエラーがあった時に確認がしやすいかと。
            Tuple<list<Models.class1>, List<Models.class2>> myModel = new Tuple<list<Models.class1>, List<Models.class2>>(myData1, myData2);
            return View(myModel);
        

ビュー側

            @model Tuple<List<Models.class1>, List<Models.class2>>
            
            //Tupleがnullの可能性もあるのでの予防処理
            @if(Model != null)
            {
                <table>
                <tr><th>列1</th><th>列2</th><th>列3</th></tr>
                @if (Model.Item2.Count > 0)
                {
                    foreach (var item in Model.Item2)
                    {
                        <tr>
                        <td>@item.列1</td>
                        <td>@item.列2</td>
                        <td>@item.列3</td>
                        </tr>
                    }
                }
                </table>
                
            }
        

まとめるクラスを使う場合

コントローラからビューに渡したいデータが複数あり、またHtml.TextBoxForなどのヘルパーを使いたい時には、ラッパーとなるクラスを自分で作り、そのプロパティにデータを持たせるとやりやすいです。

モデルフォルダの自作のクラス

            public class myDataClass
            {
                public Models.class1 data1
                {
                    get;
                    set;
                }
                public Models.class2 data2
                {
                    get;
                    set;
                }
            }
        

コントロール側

            Models.myDataClass myData = new Models.myDataClass
            {
                data1 = new Models.class1(),
                data2 = new Models.class2()
            };
            return View(myData);
        

ビュー側

            @model Models.myDataClass
        








良いやや良い普通やや悪い悪い
13 0 0 1 0

投稿日時評価コメント
2023/02/04 良い คนใดที่ต้องการมาเล่นXO สล็อตเกมส์สล็อตออนไลน์ทำเงินเลยที่นี้ พวกเรามีแจกโบนัสเพียบ ที่ xoslotvip.com สามารถเล่นไม่มีวันหยุด ทุกท่านจะไม่มีคำว่าเบื่อเหงาะอีกต่อไป ผู้ใดที่มีดวงหรือของดีมาเช็คกันหน่อย ทางเรามีบริการดีๆมากมายไม่ว่าจะเป็นฝากถอนออโต้เร็วภายใน15 วินาที หรือ ทดลองเล่นสล็อตออนไลน์ ที่ไม่ต้องฝากเงินเข้ามา ทางเว็บเกมสล็อตมีเงินรางวัลคอยให้ทุกท่านมารับไปอยู่ และเรานั้นยังมีเกมยิงปลาที่สามารถหาเงินได้เร็วทันใจใช้เวลาไม่นาน เล่นกับเพื่อนก็ได้ เล่นคนเดียวก็ดี มีให้เล่นกันแล้วบนโทรศัพท์เคลื่อนที่ ไม่ต้องเดินทางไกล โหลดแอพลิเคชั่นมาไว้ เล่นได้ตลอดวัน อีกทั่งยังมีแอดมินคอยบริการตลอด 24 ชั่วโมง สมัครเลยวันนี้ รับโปรโมชั่นสล็อตได้ทุกวัน เว็บไซต์สล็อตที่เยี่ยมที่สุดในไทย ไม่มีเรื่องราวทุจริตสามารถเชื่อใจได้ 100% มีเกมจากทางค่ายSLOT XOให้เล่นมากกว่า300เกมส์ โดยตัวเกมได้วางแบบมาได้อย่างยอดเยี่ยมมีสีสันเล่นไม่น่าเบื่อ เล่นได้ผ่านโน๊ตบุ้คหรือแท็ปแล็ตได้ทุกรุ่นทุกยี่ห้อ ไม่ว่าจะเป็นIOS รองรับทุกระบบปฎิบัติการ สล็อตออนไลน์ เว็บเดียว ที่ได้เอาเกมสล็อตมากมาย จากทุกค่ายมาให้สหายๆทุกคนได้ทดลองเล่น สามารถเข้ารับเครดิตฟรีได้เลยสมัครสมาชิกเว็บสล็อตกับทางเราสล็อตเว็บใหญ่ แล้วก็สำหรับใครที่เล่นไม่ได้เงินหรือเสียเงินเราก็มีการแจกเทคนิคสล็อตออนไลน์ที่ทางเราได้ไปสอบถามจากนักพนันที่เล่นเป็นอาชีพ รับรองสามารถทำรางวัลใหญ่ได้แน่นอน สล็อตxo
2023/01/23 良い 管理者により削除されました。
2023/01/21 良い 管理者により削除されました。
2023/01/17 良い 管理者により削除されました。
2023/01/10 良い 管理者により削除されました。
2022/12/29 良い 管理者により削除されました。
2022/12/28 良い 管理者により削除されました。
2022/12/11 良い 管理者により削除されました。
2022/11/30 良い 管理者により削除されました。