从ASP.NET MVC中的不同模型表访问字段

时间:2013-06-23 19:00:20

标签: c# asp.net-mvc

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

这是我的代码:

@{
    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>

2 个答案:

答案 0 :(得分:0)

我可以想到两个选项:

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

    @ {

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

    }

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

答案 1 :(得分:0)

我想你想要

  • 制作包含用户信息和IEnumerable<...>
  • 的网页模型
  • 或将用户信息传递给ViewBag
  • 或致电@Html.RenderAction()

我认为你需要记住重用视图模型类的可能性。如果您看不到重用模型的方法,请使用ViewBag将信息传递给View。在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操作创建部分视图。