Asp.Net Mvc在部分视图之间传递参数

时间:2014-11-21 15:27:16

标签: asp.net asp.net-mvc asp.net-mvc-partialview

我的主要观点如下:

 <div class="wellContainer" id="stockCardGroupContainer">
        @Html.Action("_StockGroupMenu", new { stockGroupId = 1})
 </div>
 <div id="stockCardContainer" class="wellContainer">
        @Html.Action("_Index", "WrhStockCard", new { stockGroupId = ViewBag.wrhRelatedStockGroupId })
 </div>

以下是返回部分视图的方法。

    public PartialViewResult _StockGroupMenu(int? id) 
    {
        var wrhStockGroup = db.WrhStockGroup.Include(w => w.RelatedWrhStockGroup).Where(p => p.RelatedWrhStockGroupId == id);
        ViewBag.wrhRelatedStockGroupId = id;
        ViewBag.stockGroupName = db.WrhStockGroup.Find(id).Name;

        return PartialView(wrhStockGroup.ToList());
    }


    public PartialViewResult _Index(int? stockGroupId)
    {
        var relatedStockCards = stockCardService.GetStockCardsByGroupId(stockGroupId);
        ViewBag.stockGroupId = stockGroupId;
        ViewBag.stockGroupName = db.WrhStockGroup.Find(stockGroupId).Name;
        return PartialView(relatedStockCards);
    }

情形是,当用户点击一个群组时,我需要显示股票卡&#34; stockCardContainer&#34;并且还显示了stockCardGroupContainer中的相关childGroupd。但是我在_StockGroupMenu方法中设置ViewBag.wrhRelatedStockGroupId但是不能将它传递给第二个@ Html.Action,因为它是不同的局部视图。

1 个答案:

答案 0 :(得分:0)

有多种方法可以做到这一点。尝试使用TempData - 它将保留下一个请求的数据,并自动清除。因此,在您的控制器操作中,对于您需要传递到另一个操作/部分视图的数据,将ViewBag分配的行替换为以下内容:

TempData["wrhRelatedStockGroupId"] = id;

然后在下一个操作中阅读并将其放在ViewBag或模型中。