在MVC中的同一视图上显示列表和提交表单

时间:2014-09-23 06:58:43

标签: c# asp.net ajax asp.net-mvc

我有一个类名称评论如下

public class Comment
    {
        public int Id { get; set; }
        public string Name { get; set; }
        public string Coment { get; set; }
    }

我正在尝试做什么,我想显示评论列表和表单以在同一视图(索引)上添加评论,这就是我所做的,到目前为止,但我无法得到{{1这是我的索引视图

hint

但在这里我无法得到提示@model IEnumerable<GuestbookEntryApp.Models.Comment> <h2>Index</h2> <div id="CommentList"> <table> <tr> <th>Name</th> <th>Comments</th> </tr> @foreach (var obj in Model) { <tr> <td>@obj.Name</td> <td>@obj.Coment</td> </tr> } </table> </div> <br /> <div id="commentBox"> @Html.Partial("~/Views/Comments/_AddComment.cshtml", new ViewDataDictionary { Model = new GuestbookEntryApp.Models.Comment() }) </div> 这是我的控制器

@Html.LabelFor(x => x.Name)

还有其他方法可以做到这一点。 我想要这样 enter image description here

1 个答案:

答案 0 :(得分:2)

创建一个视图模型,其中包含现有注释和新注释的属性

public class CommentVM
{
  public IEnumerable<Comment> ExistingComments { get; set; }
  public Comment NewComment { get; set; }
}

查看

@model YourAssembly.CommentVM
....
@foreach (var obj in Model.ExistingComments)
{
  ...
}

@using (Ajax.BeginForm("AddComment", .....}))
{
  @Html.LabelFor(x => x.NewComment.Name)
  ....

并调整控制器以添加Bind.Prefix属性

public ActionResult AddComment([Bind(Prefix="NewComment")]Comment _comment)
{
  ....