【问题标题】:How to access data inside ViewBag in Asp.Net如何在 Asp.Net 中访问 ViewBag 中的数据
【发布时间】:2015-12-08 14:19:58
【问题描述】:

您好,谁能告诉我如何在 Asp.net 中访问 ViewBag 内部的数据。我会更好地解释什么。我有一个项目,用户可以发布一些东西,每个用户都有姓名和图像。然后在用户发布后应该出现写的内容和姓名姓氏和他的照片。 现在我在控制器上有这个代码:

var posts_public = from p in db.Posts
                               join e in db.Privacy on p.id_post equals e.id_post
                               join pu in db.Publish on p.id_post equals pu.id_post
                               join u in db.Users on pu.id_user equals u.id_user
                               where e.id_privacy== 1
                               select new { p.text, u.name, u.surname, u.image};

            ViewBag.Posts = posts_public;

在视图上我有这个:

 @foreach (var item in ViewBag.Posts)
        {
            @item

        }

但我得到的结果是

{text = hello, name = Pedro, Surname = Filipe, image = \Content\Imgs\Img4}

我想要实现的是这样的:

(image of user) img src="\Content\Imgs\Img4) Pedro Filipe 
Hello

但我无法在 viewbag 中分离这些数据。有人能帮我吗? 谢谢

【问题讨论】:

    标签: c# asp.net-mvc viewbag


    【解决方案1】:

    这就是你在剃刀语法中的做法。

    @foreach (var item in ViewBag.Posts)
    {
        <div>
            <img src="@item.image">
            <p class="name">@item.name @item.Surname</p>
            <p class="message">@item.text</p>
        </div>
    }
    

    【讨论】:

    • 我收到此错误:System.Core.dll 中发生“Microsoft.CSharp.RuntimeBinder.RuntimeBinderException”类型的异常,但未在用户代码中处理附加信息:“对象”不包含“图像”的定义:/
    • 您在 Viewbag 中添加的对象可能没有图像属性。您可能想要调试列表并获取确切的属性名称。
    • 但使用 item.name 时出现了同样的错误:附加信息:“对象”不包含名称的定义:/
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-12-30
    • 1970-01-01
    • 1970-01-01
    • 2013-09-11
    • 2019-05-19
    相关资源
    最近更新 更多