Asp.net 在viewbag中传递数据

Asp.net 在viewbag中传递数据,asp.net,asp.net-mvc-3,Asp.net,Asp.net Mvc 3,我想从表db.instantservices 我不能这样做。我使用的是EF code,在浏览器上我可以看到此详细信息页面,但不能看到viewbag中的信息。提前谢谢 Classes-: public class InstantService { public int InstantServiceID { get; set; } public string ServiceName { get; set; } public string InstantUserName

我想从表
db.instantservices
我不能这样做。我使用的是
EF code
,在浏览器上我可以看到此详细信息页面,但不能看到
viewbag
中的信息。提前谢谢

Classes-:


 public class InstantService
{
    public int InstantServiceID { get; set; }
    public string ServiceName { get; set; }
    public string InstantUserName { get; set; }
    public string Title { get; set; }``
    public string Description { get; set; }
    public int Hours { get; set; }
    public int InstantID { get; set; }
    public Instants CurrentInstant { get; set; }
    public virtual ICollection<Review> Reviews { get; set; }
}


public class Review
{
    public int ReviewID { get; set; }
    public InstantService Service { get; set; }
    public int InstantServiceID { get; set; }
    public string MyReview{ get; set; }
}
查看代码-:

                 @{
          ViewBag.Title = "Details";
                  }


             <fieldset>
            <legend>Review</legend>

             <div class="display-label">Service</div>
             <div class="display-field">
             @Html.DisplayFor(model => model.Service.Title)
             </div>

             <div class="display-label">MyReview</div>
             <div class="display-field">
             @Html.DisplayFor(model => model.MyReview)
             </div>
             </fieldset>

             <p>
             @Html.ActionLink("Edit", "Edit", new { id=Model.ReviewID }) |
             @Html.ActionLink("Back to List", "Index")
             </p>
             <div>
             Total Hours required were -:
             <div>
             @ViewBag.ServiceHours
             </div>
             </div>
@{
ViewBag.Title=“详细信息”;
}
复习
服务
@DisplayFor(model=>model.Service.Title)
我的评论
@DisplayFor(model=>model.MyReview)

@ActionLink(“编辑”,“编辑”,新的{id=Model.ReviewID})|
@ActionLink(“返回列表”、“索引”)

所需总小时数为-: @ViewBag.ServiceHours
此方法(Linq选择)返回IEnumerable:

当您将其直接转储到Razor视图中时,它将使用ToString进行渲染,这是您不希望看到的。如果希望从该数据库调用中得到一个结果,则可以使用FirstOrDefault获取实际值:

ViewBag.ServiceHours = db.InstantServiceDB
    .Where(model => model.ForeignKey == id)
    .Select(model => model.Hours)
    .FirstOrDefault();

目前尚不清楚您希望如何准确显示
ViewBag.ServiceHours
数据。由于赋值是整数的集合,因此可以在视图中以如下方式显示:

<div>
    @(String.Join(", ", ((IEnumerable<int>) ViewBag.ServiceHours).Select(x => x.ToString())))
</div>

@(String.Join(“,”,((IEnumerable)ViewBag.ServiceHours)。选择(x=>x.ToString())

这将显示所有以逗号分隔的值。您可以根据需要调整格式。

尝试
ViewBag.servicehurs=db.InstantServiceDB.Select(model=>model.Hours.ToArray()
首先感谢您的帮助。我想检索该InstantService的小时数,该服务的评论就在那里。@user1609429如果不了解更多关于db.InstantServiceDB的信息,我很难准确地说出来。关键是要确保表达式的右侧返回一个字符串。类似于ViewBag.ServiceHours=db.InstantServiceDB.Select(model=>model.Hours)。其中(“Foriegnkey\u of_InstantServices\u Table”=PrimaryKeyID\u of_Reviews\u Table,);那么这些相同的值应该是什么呢?还有,如何在这里写WHERE子句。谢谢YOu@user1609429请看我的最新答案。只需将“ForeignKey”替换为您模型中的外键列的名称。非常感谢。这正是我要查找的内容。!!:)。另外,请告诉我这是一种在现实世界应用程序中实现的好方法吗?首先,感谢您的帮助。这两个数据表由外键关联,您可以在代码中看到。您给出的代码非常有用,但每次都显示第一行,这不是故意的。我想要查看即时服务的小时数,您能告诉我吗。?
ViewBag.ServiceHours = db.InstantServiceDB
    .Where(model => model.ForeignKey == id)
    .Select(model => model.Hours)
    .FirstOrDefault();
<div>
    @(String.Join(", ", ((IEnumerable<int>) ViewBag.ServiceHours).Select(x => x.ToString())))
</div>