0

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

有没有办法做到这一点?

4

3 回答 3

0

你的问题对我来说不是很清楚:/

我的假设->如果您将代码更改为如下所示:

 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)

}

如果您详细解释您想要达到的目标,我们将更容易为您提供正确的答案。

于 2013-01-16T14:30:32.280 回答
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

于 2013-01-15T11:53:47.473 回答
-1

您可以像这样访问模型中的数据:

@Model.EmployeeDetail ...

于 2013-01-15T11:51:35.007 回答