如何在我的视图中使用Viewbag

时间:2012-10-18 07:37:20

标签: asp.net-mvc-3

我不明白,我有我的控制器:

[HttpGet]
public ActionResult Detail(int userId)
{
  var user = ZincService.GetUserForId(userId);
  if (user != null)
  { 
      ViewBag.user = userId;
      ViewBag.email = user.Email;
      ViewBag.title = user.JobTitle;
      ViewBag.node = user.Node;
  }
  return View(user);
}

然后我的观点,Detail.aspx

<div id="user-details-view">
<div>
  Title:
</div>
<div>
   <%: Model.JobTitle %>
   <%: Model.News %>
   <%: Model.Node %>
</div>
<div>
   <%: Html.ActionLink("Change Email Address", "ChangeEmailAddress", new { @id = Model.UserId })%>
</div>
</div>

当我运行我的应用程序时出现错误:

无法找到资源。 说明:HTTP 404.您要查找的资源(或其中一个依赖项)可能已被删除,名称已更改或暂时不可用。请查看以下网址,确保拼写正确。

请求的网址:/Areas/Admin/Views/User/Detail.aspx

我不明白?是因为语法错误吗?

4 个答案:

答案 0 :(得分:3)

以前的帖子在逻辑上是正确的,但您在控制器中分配的视图包名称不同。它应该是:

<div id="user-details-view">
    <div>
       Title:
    </div>
    <div>
        <%: ViewBag.email %>
        <%: ViewBag.title %>
        <%: ViewBag.node %>
    </div>
    <div>
        <%: Html.ActionLink("Change Email Address", "ChangeEmailAddress", new { @id = ViewBag.user })%>
    </div>
</div>

希望有所帮助......

答案 1 :(得分:1)

一定是这样的

 <%: ViewBag.JobTitle %>
   <%: ViewBag.News %>
   <%: ViewBag.Node %>

答案 2 :(得分:1)

Model.替换为ViewBag.

  <%: ViewBag.title %>
   <%: ViewBag.email %>
   <%: ViewBag.node %>

并且也改变了这个

<%: Html.ActionLink("Change Email Address", "ChangeEmailAddress", new { id = ViewBag.user })%>

答案 3 :(得分:0)

您必须使用以下语法:

<%: ViewBag.email %>
<%: ViewBag.title %>
<%: ViewBag.node %>

但如果使用Model:

会更好
public class UserInfo
{
    public int UserId { get; set; }
    public string Email { get; set; }
    public string Title { get; set; }
    public NodeType Node { get; set; }
}

[HttpGet]
public ActionResult Detail( int userId )
{
    var data = ZincService.GetUserForId( userId );
    var user = new UserInfo();
    if ( data != null )
    {
        user.UserId = userId;
        user.Email = data.Email;
        user.Title = data.JobTitle;
        user.Node = data.Node;
    }
    return View( user );
}

在视图(MVC3)中使用剃刀语法:

@model UserInfo
<div id="user-details-view">
<div>
  Title:
</div>
<div>
   @Model.Title
   @Model.Node
</div>
<div>
   @Html.ActionLink("Change Email Address", "ChangeEmailAddress", new { @id = Model.UserId })
</div>
</div>