2015-12-14 75 views
1

我未能从mvc部分视图检索数据。正下方是局部视图:如何从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> 

感谢您的帮助!

+0

假设'viewDataProduct'包含数据,那么它的' @ viewDataProduct.Name'内部的局部视图。但它不会在主视图中工作,除非您还声明'viewDataProduct'(但为什么要重复两次?) –

+0

@ {Html.RenderPartial(“_ myPartialView”);}并添加@viewDataProduct.Details –

+0

@StephenMuecke 感谢您的回应!我为什么要重复两次?这是因为每个使用_myPartialView的视图都需要从Session [“ProductDetails”](即var viewDataProduct)中检索不同的属性。 – jcisood

回答

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所说,虽然你可能不想这样做两次。我建议重做你的局部模型,然后将该模型从父模型传递到局部模型,可能不会将其存储在会话中,但可能会有其他设计约束影响你的决定。

+0

感谢您的回复!真 - 我无法更改现有设计,我必须在_myPartialView.cshtml中使用会话变量(即Session [“ProductDetails”]作为Data.DataAccess.Product)。有没有其他方法可以访问ProductView.cshtml中的_myPartialView.cshtml数据,例如从内容页面访问主页的数据? – jcisood

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> 
+0

感谢您的回复! 我按照你的建议尝试过。没有成功。 _myPartialView.cshtml由其他12个视图使用。我的目标是避免在其他12个使用_myPartialView.cshtml的视图中重复使用同一段代码(即var viewDataProduct = Session [“ProductDetails”]作为Data.DataAccess.Product;)。相反,我想在_myPartialView.cshtml中声明/获取分配的viewDataProduct,并从其他12个视图中访问它。 – jcisood