私のページにコメントシステムを追加しようとしています。各ページのコメントのリストビューをスキャフォールディングできるようにしたいと思います。
PartialView(db.Comments.ToList());
スキャフォールドコードを使用して、戻り値をに、をに変更することで、それをパーシャルビューに配置できると思いViewResult
ましたActionResult
。
@for (item in model) {....}
null参照でで壊れますexception error
。
だから...私がこれをどのように行うかについてのアイデアはありますか?例:どこにでもあるコメントシステム。
@model IEnumerable<_2nditeration.Models.Comment>
@{
ViewBag.Title = "Messages";
}
<h2>Messages</h2>
<p>
@Html.ActionLink("Create New", "Create")
</p>
<table>
<tr>
<th>
uname
</th>
<th>
email
</th>
<th>
subject
</th>
<th>
referrer
</th>
<th>
Created
</th>
<th>
comment
</th>
<th></th>
</tr>
@*BREAKS HERE!!!!!!with a null reference exception on the Model object*@
@foreach (var item in Model) {
<tr>
<td>
@Html.DisplayFor(modelItem => item.uname)
</td>
<td>
@Html.DisplayFor(modelItem => item.email)
</td>
<td>
@Html.DisplayFor(modelItem => item.subject)
</td>
<td>
@Html.DisplayFor(modelItem => item.referrer)
</td>
<td>
@Html.DisplayFor(modelItem => item.Created)
</td>
<td>
@Html.DisplayFor(modelItem => item.comment)
</td>
<td>
@Html.ActionLink("Edit", "Edit", new { id=item.ID }) |
@Html.ActionLink("Details", "Details", new { id=item.ID }) |
@Html.ActionLink("Delete", "Delete", new { id=item.ID })
</td>
</tr>
}
</table>
コントローラのアクション
public class CommentsController : Controller
{
private DbEntity db = new DbEntity();
//
// GET: /Comments/Read
public ActionResult ReadComments()
{
return PartialView(db.Comments.ToList());
}
そしてモデル
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.ComponentModel.DataAnnotations;
namespace _2nditeration.Models
{
public class Comment
{
public int ID { get; set; }
[Display ( Name = "Name")]
public string uname { get; set; }
[Display(Name = "Email Address")]
public string email { get; set; }
[Display(Name = "Subject")]
public string subject { get; set; }
public string referrer { get; set; }
public DateTime? Created { set; get; }
[Required]
[Display(Name = "Comment")]
public string comment { get; set; }
}
}