如何从MVC Partial View中检索数据?

时间:2015-12-14 23:33:50

标签: c# asp.net-mvc-4 razor partial-views

我无法从mvc局部视图中检索数据。下面是部分视图:

_myPartialView.cshtml

@{
    ViewBag.Title = "_Header";

    var viewDataProduct = Session["ProductDetails"] as Data.DataAccess.Product;

}

<header>
   <div style="top:25px;left:200px; background-color:#2d2d2d; color:#fff;font-size:20px;padding:5px;">
    Product: <span>viewDataProduct.Name</span>
</div>
</header>

以下是使用上述局部视图的视图。我想在下面的视图(ProductView.cshtml)中检索 viewDataProduct.Details

ProductView.cshtml

<body>    
    @Html.Partial("_myPartialView")
    <div id="parentDiv">
       <div id="childDiv">
          Product Details: <span> viewDataProduct.Details </span>
       </div>
    </div>
</body>

感谢您的帮助!

2 个答案:

答案 0 :(得分:0)

将相同的块添加到父视图中,您不是从视图中检索数据,而是从会话中检索它。

@{
    var viewDataProduct = Session["ProductDetails"] as Data.DataAccess.Product;
}
<body>    
    @Html.Partial("_myPartialView")
    <div id="parentDiv">
       <div id="childDiv">
          Product Details: <span> @viewDataProduct.Details </span>
       </div>
    </div>
</body>

正如Stephone Muecke所说,虽然你可能不想这样做两次。我建议重新修改你的部分模型然后将该模型从父模型传递到部分模型,可能不会将其存储在会话中,但可能存在影响您做出此决定的其他设计约束。

答案 1 :(得分:0)

由于您的数据在会话中,您也可以在ProductView.cshtml中获取ProductDetails并将值传递给局部视图。

 @Html.Partial("_myPartialView",@viewDataProduct) // replace in main view

// partial view
@model Data.DataAccess.Product

@{
   ViewBag.Title = "_Header";
 }

<header>
   <div style="top:25px;left:200px; background-color:#2d2d2d; color:#fff;font-size:20px;padding:5px;">
    Product: <span>@Model.Name</span>
</div>
</header>