内部连接不工作与视图在mvc

本文关键字:视图 mvc 工作 连接 内部 | 更新日期: 2023-09-27 18:03:09

我正在开发MVC应用程序,在那里我将内部连接结果从控制器传递到视图,如下所示:

    public class CartController : Controller
{
    ApostilleUSEntities db = new ApostilleUSEntities();
    public ActionResult Index()
    {
        var query = db.tbl_cart
                        .Join(db.tbl_document_type,
                               cart => cart.document_type_id,
                               doc_type => doc_type.document_type_id,
                               (cart, doc_type) => new { Cart = cart,Doc_type = doc_type }
                        ).ToList();
        return View(query);
    }
}

和view I显示列表如下:

@{
var index=1;
foreach (var i in Model)
{
    <tr>
        <td>@index</td>
        <td>@i.country_id</td>
    </tr>
    index++;
}

}

给了我下面的错误:

对象中不存在购物车

如果我把内部连接改成简单连接,像这样:

    public class CartController : Controller
{
    ApostilleUSEntities db = new ApostilleUSEntities();
    public ActionResult Index()
    {
        var query1 = db.tbl_cart.ToList();
        return View(query);
    }
}
@{
    var index=1;
    foreach (var i in Model)
    {
        <tr>
            <td>@index</td>
            <td>@i.country_id</td>
        </tr>
        index++;
    }
}

一切正常。动态视图不工作与内部连接?我应该使用模型吗?

内部连接不工作与视图在mvc

问题在于Model属性的使用。你正在返回两个对象Cart和Doc_type,但在视图中,你正在迭代模型属性,它们再次是Cart和Doc_type。

您可以尝试使用@i.Cart。country_id

另一个解决方案是,您可以将强类型模型与视图绑定。你可以返回一个强类型的ViewModel:

 var query = db.tbl_cart
                    .Join(db.tbl_document_type,
                           cart => cart.document_type_id,
                           doc_type => doc_type.document_type_id,
                           (cart, doc_type) => new 
CartModel { 
    CartProp1 = cart.Prop1,
    CartProp2 = cart.Prop2,
    CartProp3 = cart.Prop3,
    DocProp1 =  doc_type.Prop1, 
    DocProp2 = doc_type.Prop2
}
                    ).ToList();