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 に答える