0

我想从表中检索小时列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; }
}

但是当使用这段代码时,我没有得到任何价值。代码 -:

public ViewResult Details(int id)
         {
           Review review = db.ReviewDB.Find(id);
            ViewBag.ServiceHours = db.InstantServiceDB.Select(model => model.Hours);
            return View(review);
          }      

查看代码-:

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

2 回答 2

0

此方法(Linq Select)返回一个IEnumerable

db.InstantServiceDB.Select(model => model.Hours);

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

ViewBag.ServiceHours = db.InstantServiceDB
    .Where(model => model.ForeignKey == id)
    .Select(model => model.Hours)
    .FirstOrDefault();
于 2012-08-19T16:01:12.380 回答
0

目前尚不清楚您希望如何ViewBag.ServiceHours显示数据。因为,由赋值给出,它是一个整数的集合,你可以在视图中以这种方式显示它:

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

这将显示以逗号分隔的所有值。您可以调整格式以满足您的需求。

于 2012-08-19T16:01:13.900 回答