2013-02-01 79 views
0

我在ASP.NET MVC中構建了一個web應用程序。我有一個評論頁面,其中的評論顯示在最新到最舊的列表中,並且在底部有一個表單,用戶可以發表新評論。 除了讓頁面顯示最新評論之外,還應突出顯示錶單條目。在同一頁上顯示評論和發佈表單以添加新評論

這樣做的最好方法是什麼,顯示的數據和帖子表單在同一頁上?

是否有可能沒有ajax做到這一點?

--Code extract--

class CommentsViewModel 
{ 
    public IList<Comment> comments { get; set; } 
    public Comment comment { get; set; } 
    public SelectList commentCategories { get; set; } 
} 


class Comment 
{ 
    [Required] 
    public string commentData { get; set; } 

    [Required] 
    public int? commentCategory { get; set; } 
} 


class Comments : Controller 
{ 

    public ActionResult Index() 
    { 
     Site db = new Site(); 
     CommentsViewModel commenstVm = new 
     { 
      comments = db.GetComments(), 
      comment = new Comment(), 
      commentCategories = db.GetCommentCategories() 
     }; 

     return View(commentsVm); 
    } 


    [HttpPost] 
    public ActionResult AddNewComment(CommentsViewModel commentVm) 
    { 
     Site db = new Site(); 
     if (!ModelState.IsValid) 
     { 
      return View("Index", commentVm); 
     } 
     db.AddComment(commentVm.comment); 

     return RedirectToAction("Index"); 
    } 
} 
+0

它應該是簡單。你的代碼是什麼樣的?所有你需要做的就是渲染一個帶有註釋的所有字段的空白表單,然後再通過'Model'循環到'View'的另一個區域。您可以使用JavaScript來突出顯示最新評論。 –

+0

我編輯了你的標題。請參閱:「[應該在其標題中包含」標籤「](http://meta.stackexchange.com/questions/19190/)」,其中的共識是「不,他們不應該」。 –

+0

「處理頁面的最佳方式」是什麼意思? – KodeKreachor

回答

1

這是一個基本ViewController,你可以作爲一個起點使用。

模型和視圖模型:

public class CommentsViewModel 
{ 
    public IList<Comment> comments { get; set; } 

    public CommentsViewModel() 
    { 
     comments = new List<Comment>(); 
    } 
} 

public class Comment 
{ 
    [Required] 
    public string commentData { get; set; } 
    /** Omitted other properties for simplicity */ 
} 

查看:

@using (@Html.BeginForm("Index", "Comments")) 
{ 
    @Html.TextBoxFor(t => t.comment.commentData) 
    @Html.ValidationMessageFor(t=> t.comment.commentData, "", new {@class = "red"}) 
    <button name="button" value="addcomment">Add Comment</button> 
} 

@foreach (var t in Model.comments) 
{ 
    <div>@t.commentData</div> 
} 

控制器:

public class CommentsController : Controller 
{ 
    /** I'm using static to persist data for testing only. */ 
    private static CommentsViewModel _viewModel; 

    public ActionResult Index() 
    { 
     _viewModel = new CommentsViewModel(); 
     return View(_viewModel); 
    } 

    [HttpPost] 
    public ActionResult Index(Comment comment) 
    { 
     if (ModelState.IsValid) 
     { 
      _viewModel.comments.Add(
       new Comment() {commentData = comment.commentData}); 
      return View("Index", _viewModel); 
     } 

     return RedirectToAction("Index"); 
    } 
}