在asp.net中为_layout.cshtml视图显示单个记录

时间:2015-01-11 13:01:58

标签: c# asp.net-mvc-3

我没有想法,但我猜是因为我是asp.net中的菜鸟。 我有一个MVC3项目,我的想法是有两个部分:

enter image description here

Section Main用于显示表格和新闻以及进入不同页面时更改的所有员工。 Section Main_profile用于显示当前登录用户的配置文件信息(名称,电子邮件等)。这是问题所在。我知道我需要将Main_profile的代码显示在_Layout.cshtml中,因为我希望始终显示该信息。我试过这个:

    <section id="main_profile">
        @Html.Action("Profile", "Person", new { name = User.Identity.Name })
    </section>

Profile是我PersonController中的一个方法,如下所示:

public ViewResult Profile(string name)
    {
        string person_n = name;
        return View(db.Persons.Where(s => s.Username.Equals(person_n)));
    }

最后,有一个Profile的视图:

@model IEnumerable<Bachelor.Models.Person>
<h2>Your profile</h2>
<table border = "1">
<tr>
    <th>
        Username
    </th>
    <th>
        Birthday
    </th>
    <th>
        Education
    </th>
    <th>
        Email
    </th>
</tr>
@foreach (var item in Model) {
<tr>
    <td>
        @Html.DisplayFor(modelItem => item.Username)
    </td>
    <td>
        @Html.DisplayFor(modelItem => item.Birthday)
    </td>
    <td>
        @Html.DisplayFor(modelItem => item.Education)
    </td>
    <td>
        @Html.DisplayFor(modelItem => item.Email)
    </td>
</tr>

但我得到的是&#34;未处理的类型&#39; System.StackOverflowException&#39;发生在未知模块中。&#34;

不知道这可能与它有关,但在主要部分,在某些页面上有一个显示的记录表。 我在这里做错了什么?

1 个答案:

答案 0 :(得分:0)

将部分中的Layout设置为null。正在做的是以递归方式调用自己:

 @{ Layout = null; }