0

我有一个页面,该页面根据传递给该页面的用户显示过滤表。我还想在页面顶部显示用户的信息,但这来自不同的表(来自 Account 模型)。在我的其他控制器/视图中工作时,有没有办法可以访问该表中的字段?

这是我的代码:

@{
    ViewBag.Title = "User Profile";
}

@model IEnumerable<FTv2.Models.Trade>

@{
    ViewBag.Title = "Active Trades";
    ViewBag.ImgUrl = ViewBag.Name + ".png";
}


<h2>@ViewBag.User's Profile:</h2>
<p>
    // This is where I would like to put the User info.
</p>
<h2>Active Trades:</h2>
<p>

</p>
<table>
    <tr>
        <th>
        </th>
        <th>
            @Html.DisplayNameFor(model => model.Name)
        </th>
        <th>
            @Html.DisplayNameFor(model => model.Price)
        </th>
        <th>
            @Html.DisplayNameFor(model => model.User)
        </th>
        <th></th>
    </tr>

@foreach (var item in Model)
{
    if (item.User == ViewBag.User)
    {
    <tr>
        <td>
            @{ViewBag.ImgUrl = @item.Name + ".png";}
        <a href="/Images/@ViewBag.ImgUrl"><img src="/Images/@ViewBag.ImgUrl" HEIGHT="66" WIDTH="50" ></a>
        </td>
        <td>
            @Html.DisplayFor(modelItem => item.Name)
        </td>
        <td>
            @Html.DisplayFor(modelItem => item.Price) TE
        </td>
        <td>
            <a href="/ActiveTrades/@item.User">@Html.DisplayFor(modelItem => item.User)</a>
        </td>
        @{if (ViewBag.User == User.Identity.Name){
        <td>
            @Html.ActionLink("Edit", "Edit", new { id = item.ID }) |
            @Html.ActionLink("Details", "Details", new { id = item.ID }) |
            @Html.ActionLink("Delete", "Delete", new { id = item.ID })
        </td>
        }}
    </tr>
    }
}

</table>
4

2 回答 2

0

我能想到的有两种选择:

  1. 渲染一个返回用户详细信息的操作方法

    @{

    Html.RenderAction("UserDetails", new { UserID = ViewBag.UserID});
    

    }

  2. 创建一个新模型,其中包含用户详细信息以及交易的 IEnumerable,并将其用于您的视图。

于 2013-06-23T19:09:50.500 回答
0

我想你想

  • 制作将包含用户信息和IEnumerable<...>.
  • 或将用户信息传递到 ViewBag
  • 或致电@Html.RenderAction()

我认为您需要牢记重用视图模型类的机会。如果您看不到重用模型的方法,请使用 ViewBag 将信息传递到视图中。在 Controller 的 Action 中设置属性 ViewBag.UserInfo = userInfo; 并在视图调用中:code@Html.Partial("_UserInfo", (UserInfo)ViewBag.UserInfo) code。但更实用的方法是调用@Html.Action(): 1. 制作动作UserController.UserInfo(int id)。2. 从你的视图调用@Html.Action("UserInfo", "User", new {Id = ViewBag.UserId}); 3. 为 UserController.UserInfo 动作创建局部视图。

于 2013-06-23T19:18:16.393 回答