【问题标题】:Asp.Net Mvc Passing Parameters Between Partial ViewsAsp.Net Mvc 在局部视图之间传递参数
【发布时间】:2014-11-21 15:27:16
【问题描述】:

我的主要观点如下:

 <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);
    }

场景是,当用户单击一个组时,我需要显示股票卡“stockCardContainer”并在 stockCardGroupContainer 中显示相关的 childGroupd。但是我在 _StockGroupMenu 方法中设置了 ViewBag.wrhRelatedStockGroupId 但不能将它传递给第二个@Html.Action,因为它是不同的局部视图。

【问题讨论】:

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


    【解决方案1】:

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

    TempData["wrhRelatedStockGroupId"] = id;
    

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

    【讨论】:

      猜你喜欢
      • 2014-06-11
      • 1970-01-01
      • 2011-09-26
      • 2013-07-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-02-16
      • 1970-01-01
      相关资源
      最近更新 更多