我想从表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>
答案 0 :(得分: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();
答案 1 :(得分:0)
目前尚不清楚您希望显示ViewBag.ServiceHours
数据的确切程度。由于赋值给定它是一个整数集合,因此您可以显示它,例如以这种方式在视图中:
<div>
@(String.Join(", ", ((IEnumerable<int>) ViewBag.ServiceHours).Select(x => x.ToString())))
</div>
这将显示以逗号分隔的所有值。您可以调整格式以满足您的需求。