【问题标题】:How to make use of Viewbag in my View如何在我的视图中使用 Viewbag
【发布时间】:2012-10-18 07:37:20
【问题描述】:

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

[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。您正在查找的资源(或其依赖项之一)可能已被删除、名称已更改或暂时不可用。请查看以下 URL 并确保其拼写正确。

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

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

【问题讨论】:

    标签: asp.net-mvc-3


    【解决方案1】:

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

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

    希望对你有帮助..

    【讨论】:

      【解决方案2】:

      应该是这样的

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

      【讨论】:

        【解决方案3】:

        Model. 替换为ViewBag.

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

        也改变这个

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

        【讨论】:

          【解决方案4】:

          您必须使用该语法:

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

          但如果你使用模型会更好:

          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) 中使用 razor sintax:

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

          【讨论】:

            猜你喜欢
            • 2019-11-18
            • 2016-05-11
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多