如何在父部分视图中访问模型数据

时间:2013-01-15 11:45:34

标签: asp.net-mvc-3 razor asp.net-mvc-4

我有一个控制器,它将传递数据以查看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的数据。

有没有办法做到这一点?

3 个答案:

答案 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 ...