我有一个控制器,它将传递数据以查看Index.cshtml
public ActionResult Index()
{
var empId = @User.Identity.Name;
var empDetails = empRepository.GetEmployeeDetails(empId);
var emp = new UserViewModel {EmployeeDetail = empDetails};
return View(emp);
}
视图的布局Index.cshtml是Partialview _Layout.cshtml
@model HRM.Areas.EmployeeDetails.Models.UserViewModel
@{
ViewBag.Title = "Index";
Layout = "~/Areas/EmployeeDetails/Views/Shared/_Layout.cshtml";
}
<div>Hello</div>
我想访问我在_Layout.cshtml中从控制器操作传递到Index.cshtml的数据。
有没有办法做到这一点?
答案 0 :(得分:0)
您的问题并不清楚如何访问这些值,所以我在这里做出假设:
如果要在layout
页面的渲染中包含视图中的数据,可以使用RenderSection方法。
布局页面:
@RenderSection("ViewSection", false)
查看页面:
@section ViewSection {
<div>
<label>Emp Name:</label>
@model.EmpDetails.Name
</div>
}
当您呈现Layout
时,它会在视图中查找匹配并呈现它的部分。传递false作为第二个参数告诉布局该部分不是必需的。
有关详情:http://weblogs.asp.net/scottgu/archive/2010/12/30/asp-net-mvc-3-layouts-and-sections-with-razor.aspx
答案 1 :(得分:0)
我的问题不太清楚:/
我的假设 - &gt; 如果您将代码更改为如下所示:
public ActionResult Index()
{
var empId = @User.Identity.Name;
var empDetails = empRepository.GetEmployeeDetails(empId);
var emp = new UserViewModel { EmployeeDetail = empDetails };
ViewBag.UserViewModel = emp;
return View(emp);
}
在布局页面上,您可以访问您的数据:
@if (ViewBag.UserViewModel != null)
{
//do sth with ViewBag.UserViewModel here
//for example:
@Html.Partial("_UserView",ViewBag.UserViewModel)
}
如果您详细解释您想要实现的目标,我们将更容易为您提供正确的答案。
答案 2 :(得分:-1)
您可以像这样访问模型中的数据:
@ Model.EmployeeDetail ...