C# 如何从MVC局部视图检索数据?

C# 如何从MVC局部视图检索数据?,c#,asp.net-mvc-4,razor,partial-views,C#,Asp.net Mvc 4,Razor,Partial Views,我无法从mvc局部视图检索数据。下面是局部视图: \u myPartialView.cshtml @{ ViewBag.Title = "_Header"; var viewDataProduct = Session["ProductDetails"] as Data.DataAccess.Product; } <header> <div style="top:25px;left:200px; background-color:#2d2d2d; co

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

\u 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>
<body>    
    @Html.Partial("_myPartialView")
    <div id="parentDiv">
       <div id="childDiv">
          Product Details: <span> viewDataProduct.Details </span>
       </div>
    </div>
</body>
@{
ViewBag.Title=“\u标题”;
var viewDataProduct=会话[“ProductDetails”]作为Data.DataAccess.Product;
}
产品:viewDataProduct.Name
下面是使用上述局部视图的视图。我想在下面的视图(ProductView.cshtml)中检索viewDataProduct.Details

ProductView.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>
<body>    
    @Html.Partial("_myPartialView")
    <div id="parentDiv">
       <div id="childDiv">
          Product Details: <span> viewDataProduct.Details </span>
       </div>
    </div>
</body>

@Html.Partial(“\u myPartialView”)
产品详细信息:viewDataProduct.Details

谢谢你的帮助

将同一块添加到父视图中,不是从视图中检索数据,而是从会话中检索数据

@{
    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>
@{
var viewDataProduct=会话[“ProductDetails”]作为Data.DataAccess.Product;
}
@Html.Partial(“\u myPartialView”)
产品详细信息:@viewDataProduct.Details

正如Stephone Muecke提到的,不过你可能不想做两次。我建议重新修改您的partial以获取模型,然后将该模型从父视图向下传递到partial,可能也不会在会话中存储该模型,但可能会有其他设计约束影响您这样做的决定。

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

@{
    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>
@{
var viewDataProduct=会话[“ProductDetails”]作为Data.DataAccess.Product;
}
@Html.Partial(“\u myPartialView”)
产品详细信息:@viewDataProduct.Details

正如Stephone Muecke提到的,不过你可能不想做两次。我建议重新修改您的零件以获取模型,然后将该模型从父零件传递到零件,可能也不会在会话中存储该模型,但可能会有其他设计约束影响您这样做的决定。

因为您的数据正在会话中,您也可以在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>
@Html.Partial(“\u myPartialView”,@viewDataProduct)//在主视图中替换
//局部视图
@模型Data.DataAccess.Product
@{
ViewBag.Title=“\u标题”;
}
产品:@Model.Name

由于数据处于会话中,您也可以在ProductView.cshtml中获取ProductDetails,并将值传递给partial view

 @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>
@Html.Partial(“\u myPartialView”,@viewDataProduct)//在主视图中替换
//局部视图
@模型Data.DataAccess.Product
@{
ViewBag.Title=“\u标题”;
}
产品:@Model.Name

假设
viewDataProduct
包含数据,则其
@viewDataProduct.Name
在局部视图中。但是它不会在主视图中工作,除非您同时声明
viewDataProduct
(但为什么要重复它两次?{Html.RenderPartial(“_myPartialView”);}并添加@viewDataProduct。Details@StephenMuecke谢谢你的回复!!为什么我要重复两次??这是因为使用_myPartialView的每个视图都需要从会话[“ProductDetails”](即var viewDataProduct)检索不同的属性。假设
viewDataProduct
包含数据,则其
@viewDataProduct.Name
在部分视图中。但是它不会在主视图中工作,除非您同时声明
viewDataProduct
(但为什么要重复它两次?{Html.RenderPartial(“_myPartialView”);}并添加@viewDataProduct。Details@StephenMuecke谢谢你的回复!!为什么我要重复两次??这是因为每个使用_myPartialView的视图都需要从会话[“ProductDetails”](即var viewDataProduct)检索不同的属性。感谢您的回复!!我按照你的建议试过了。还没有成功。其他12个视图使用了_myPartialView.cshtml。我的目标是避免在其他12个使用_myPartialView.cshtml的视图中重复同一段代码(即var viewDataProduct=Session[“ProductDetails”]作为Data.DataAccess.Product;)。相反,我想在_myPartialView.cshtml中声明/获取分配的viewDataProduct,并从其他12个视图访问它。感谢您的回复!!我按照你的建议试过了。还没有成功。其他12个视图使用了_myPartialView.cshtml。我的目标是避免在其他12个使用_myPartialView.cshtml的视图中重复同一段代码(即var viewDataProduct=Session[“ProductDetails”]作为Data.DataAccess.Product;)。相反,我想在_myPartialView.cshtml中声明/获取分配的viewDataProduct,并从其他12个视图访问它。感谢您的回复!!True-我无法更改必须在_myPartialView.cshtml中使用会话变量(即会话[“ProductDetails”]作为Data.DataAccess.Product)的现有设计。有没有其他方法可以访问ProductView.cshtml中的_myPartialView.cshtml数据,比如从内容页访问母版页的数据?谢谢回复!!True-我无法更改必须在_myPartialView.cshtml中使用会话变量(即会话[“ProductDetails”]作为Data.DataAccess.Product)的现有设计。有没有其他方法可以访问ProductView.cshtml中的_myPartialView.cshtml数据,比如从内容页访问母版页的数据?