我有一个页面,根据传递给页面的用户显示过滤表。我还希望在页面顶部显示用户的信息,但这来自不同的表(来自帐户模型)。有没有办法在我的其他控制器/视图中工作时可以从这个表中访问字段?
这是我的代码:
@{
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>
答案 0 :(得分:0)
我可以想到两个选项:
渲染一个返回用户详细信息的操作方法
@ {
Html.RenderAction("UserDetails", new { UserID = ViewBag.UserID});
}
创建一个新模型,其中包含用户详细信息和IEnumerable交易,并将其用于您的视图。
答案 1 :(得分:0)
我想你想要
IEnumerable<...>
。@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操作创建部分视图。