ヘルプデスクソフトウェアのWebページを作成しています。上部にはチケットクラスの情報が表示され、下部にはICollectionを介してチケットクラスに添付されているticketNotesが表示されます。現在、下部をコメントアウトすると、上部(静的テーブル)は正しく機能します。ただし、ICollectionを指す下の2つのテーブルは機能していません。これが私が得ているエラーです:
これが私の見解です:
@model HelpDesk.Model.Ticket
@{
ViewBag.Title = "Ticket# " + Html.DisplayFor(model => model.TicketNumber);
}
<table class="table">
<tr>
<th>
@Html.DisplayNameFor(model => model.CategoryId)
</th>
<th>
@Html.DisplayFor(model => model.Category.CategoryName)
</th>
</tr>
<tr>
<th>
@Html.DisplayNameFor(model => model.OpenUserId)
</th>
<th>
@Html.DisplayFor(model => model.OpenUser.FullName)
</th>
</tr>
<tr>
<th>
@Html.DisplayNameFor(model => model.OpenDate)
</th>
<th>
@Html.DisplayFor(model => model.OpenDate)
</th>
</tr>
<tr>
<th>
@Html.DisplayNameFor(model => model.TechnicianId)
</th>
<th>
@Html.DisplayFor(model => model.Technician.FullName)
</th>
</tr>
<tr>
<th>
@Html.DisplayNameFor(model => model.TicketStatusId)
</th>
<th>
@Html.DisplayFor(model => model.TicketStatus.StatusDescription)
</th>
</tr>
<tr>
<th>
@Html.DisplayNameFor(model => model.CloseDate)
</th>
<th>
@Html.DisplayFor(model => model.CloseDate)
</th>
</tr>
<tr></tr>
</table>
<table class="table">
<tr>
<th>
@Html.DisplayNameFor(model => model.TicketNotes.Note)
</th>
<th>
@Html.DisplayNameFor(model => model.TicketNotes.TicketNoteDate)
</th>
<th>
@Html.DisplayNameFor(model => model.TicketNotes.UserNote.FullName)
</th>
<th></th>
</tr>
@foreach (var item in Model.TicketNotes)
{
<tr>
<td>
@Html.DisplayFor(modelItem => item.TicketNotes.Note)
</td>
<td>
@Html.DisplayFor(modelItem => item.TicketNotes.TicketNoteDate)
</td>
<td>
@Html.DisplayFor(modelItem => item.TicketNotes.UserNote.FullName)
</td>
</tr>
}
</table>
これが私のコントローラーコードです:
public ActionResult EditUserTicket(Guid id)
{
Ticket ticket = tickets.GetById(id);
var model = db.Tickets
.Include(t => t.TicketNotes)
.Where(t => t.TicketId == id).First();
return View(model);
}
これが私のモデルです:
namespace HelpDesk.Model
{
public class Ticket
{
public Ticket()
{
this.TicketNotes = new HashSet<TicketNote>();
}
public Guid TicketId { get; set; }
[Display(Name = "#")]
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
[Required]
public int TicketNumber { get; set; }
[ForeignKey("Category")]
[Required]
public Guid CategoryId { get; set; }
public virtual Category Category { get; set; }
[ForeignKey("OpenUser")]
[Required]
public Guid OpenUserId { get; set; }
[Display(Name = "Ticket Owner")]
public virtual User OpenUser { get; set; }
[Display(Name = "Opened")]
[DataType(DataType.Date)]
[Required]
public DateTime OpenDate { get; set; }
[ForeignKey("Technician")]
[Required]
public Guid TechnicianId { get; set; }
[Display(Name = "Technician")]
public virtual User Technician { get; set; }
[ForeignKey("TicketStatus")]
[Required]
public Guid TicketStatusId { get; set; }
public virtual TicketStatus TicketStatus { get; set; }
[Display(Name = "Closed")]
[DataType(DataType.Date)]
public Nullable<DateTime> CloseDate { get; set; }
[Display(Name = "Note")]
public virtual ICollection<TicketNote> TicketNotes { get; set; }
//public virtual ICollection<TicketSubscription> TicketSubscriptions { get; set; }
}
}
あなたのforeach
ループで
@foreach (var item in Model.TicketNotes)
item
はすでにのインスタンスなTicketNote
ので、
@Html.DisplayFor(modelItem => item.TicketNotes.Note)
TicketNote
名前の付いたプロパティがないために失敗しますTicketNotes
それはただあるべきです
@Html.DisplayFor(m => item.Note)
表の見出しには、次を使用できます。
@Html.DisplayNameFor(model => model.TicketNotes[0].Note)
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加