Linq多表聯合查詢,在View中綁定數據


Ⅰ→通過ViewData傳遞數據,不過需要新建一個類(用來存)

NewClass(里面有表1的字段和表2的字段)

    public class JoinTab1_2
    {
        public int ID { get; set; }
        public string Name { get; set; }
    }

控制器中Action

        public ActionResult Index()
        {using (DBEntities db = new DBEntities())
            {
                var query = (from tab_1 in db.T_Tab1
                             join tab_2 in db.T_Tab2 on T_Tab1.TypeID equals T_Tab2.ID
                             select new JoinTab1_2()
                             {
                                 ID = tab_1.ID,
                                 Name = tab_2.Name
                             }).ToList();
                ViewData["query"] = query;
                return View();
            }
        }

View中(可以直接在控制器中的Action直接右擊→添加視圖...然后類型選新建的這個,其它自定義吧)

<div class="table-responsive">
    <table class="table" border="1">
        <caption>測試</caption>
        <thead>
            <tr>
                <td>
                    ID
                </td>
                <td>
                    類型名稱
                </td>
                <td>
                    操作
                </td>
            </tr>
        </thead>
        <tbody>@foreach (var item in ViewData["query"] as IEnumerable<JoinInstrument>)
            {
                <tr>
                    <td>
                        @item.ID
                    </td>
                    <td>
                        @item.Name
                    </td>
                    <td>
                        <a class="btn" title="編輯" href="@Url.Action("GetInfo",new { id=@item.ID})">查看</a>
                        <a class="btn" title="編輯" href="@Url.Action("Edit",new { id=@item.ID})">修改</a>
                        <a class="btn" title="編輯" href="@Url.Action("Delete",new { id=@item.ID})">刪除</a>
                    </td>
                </tr>
            }
        </tbody>
        @*<tfoot>

            </tfoot>*@
    </table>
</div>

Ⅱ→通過return View(query);傳遞數據→會報錯!!!

控制器中Action

        public ActionResult Index()
        {
            using (DBEntities db = new DBEntities())
            {
                var query = (from tab_1 in db.T_Tab1
                             join tab_2 in db.T_Tab2 on T_Tab1.TypeID equals T_Tab2.ID
                             select new JoinTab1_2()
                             {
                                 ID = tab_1.ID,
                                 Name = tab_2.Name
                             }).ToList();
                //ViewData["query"] = query;
                return View(query);
            }
        }

view中

<div class="table-responsive">
    <table class="table" border="1">
        <caption>測試</caption>
        <thead>
            <tr>
                <td>
                    ID
                </td>
                <td>
                    類型名稱
                </td>
                <td>
                    操作
                </td>
            </tr>
        </thead>
        <tbody>@foreach (var item in Model)
            {
                <tr>
                    <td>
                        @item.ID
                    </td>
                    <td>
                        @item.Name
                    </td>
                    <td>
                        <a class="btn" title="編輯" href="@Url.Action("GetInfo",new { id=@item.ID})">查看</a>
                        <a class="btn" title="編輯" href="@Url.Action("Edit",new { id=@item.ID})">修改</a>
                        <a class="btn" title="編輯" href="@Url.Action("Delete",new { id=@item.ID})">刪除</a>
                    </td>
                </tr>
            }
        </tbody>
        @*<tfoot>

            </tfoot>*@
    </table>
</div>

這樣寫會報錯

我參考這篇文章也沒搞出來

 記dynamic的一個小坑 -- RuntimeBinderException:“object”未包含“xxx”的定義

大神看到希望能指點一二...

x

x


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM