如何将数据传递到局部视图?

时间:2013-03-15 05:52:48

标签: c# asp.net-mvc

我正在使用ASP.NET MVC和Entity Framework。我有两个查询在同一视图中显示单独的表。

一个是

 var query = from s in db.tblSites
                        where s.SiteStatus== 1
                        select s;

另一个是

var query2 = from s in db.tblSites
                            where s.SiteStatus== 0
                            select s;

所以我将使用@Html.RenderPartial

但我不知道如何传递数据。

我想将query2数据传递给我的部分视图。

 @Html.Partial("RemoveContract",--------) //I don't know how to pass data.

这是我的控制器

 public ActionResult AddContract(int id)
        {
            var query = from s in db.tblSites
                            where s.SiteStatus== 1
                            select s;

    var query2 = from s in db.tblSites
                                where s.SiteStatus== 0
                                select s;

            return View(query .ToList());

        }

怎么做?

2 个答案:

答案 0 :(得分:2)

您可以将query2添加到控制器的ViewBag,如下所示:

public ActionResult AddContract(int id)
{
    ...
    this.ViewBag.Query2 = query2;
    return View(query .ToList());
}

然后使用Partial方法的重载,传递您希望局部视图呈现为参数的视图模型。

@Html.Partial("RemoveContract", ViewBag.Query2)

注意:根据您的设置,您可能需要使用this.ViewBag.Query2 = query2.ToList()来实现查询,然后再将其传递给视图。

答案 1 :(得分:0)

只需将Model传递给@Html.Partial

即可
@Html.Partial("RemoveContract",Model) 

如果您要将query2传递给partial,那么您需要这样做:

public ActionResult AddContract(int id)
        {
            var query = from s in db.tblSites
                            where s.SiteStatus== 1
                            select s;

    var query2 = from s in db.tblSites
                                where s.SiteStatus== 0
                                select s;

//return View(query .ToList());
return View(query2 .ToList());


        }