0

我使用 ASP.Net MVC 4 开发了一个简单的 CMS 应用程序,它包括一个名为“Article”的操作方法,该方法将“Article”模型传递给视图:

// Article Model
public class Article
{
    public int Id { get; set; }
    [Required]
    public string Title { get; set; }
    [Required]
    public string Text { get; set; }
    [Required]
    public DateTime DateTime { get; set; }
    public virtual ICollection<Comment> Comments { get; set; }
}
// Action method
public ActionResult Article(int id=1)
{
        return View(GetArticleById(id));
}

在我的“文章”视图中,我想包含一个评论部分。现在如何根据我在视图中使用“文章”作为模型来获取新的评论详细信息?我以自己的方式创建了一个类似于以下代码的表单,它手动获取新的评论详细信息并将它们发布到另一个名为“Comment”的控件中名为“New”的操作,我是否以正确的方式进行?通过这种方式,我没有成功验证新的评论输入。

@using(Html.BeginForm("New","Comment",FormMethod.Post))
{
<input type="hidden" name="Id" value="@Model.Id" />
<div class="input-div">
    <input placeholder="Your name" type="text" name="Name" />
    <textarea placeholder="Your Comment" class="comment-textarea" id="Txt" name="Content"></textarea>
</div>
<div>
    <input class="submit-btn" type="submit" value="Leave a comment" />
</div>
}

抱歉英语不好,谢谢

4

1 回答 1

1

您可以创建一个CommentViewModel表示您的评论数据并显示它们ArticleViewModel的方法。ICollection<CommentViewModel>

发布新评论的表单将是基于字段的表单,CommentViewModel并且操作 (New) 将具有 aCommentViewModel作为参数。

这样,ModelBinder将为您完成工作。

请记住,您的 ViewModel 必须始终表示您想要显示的数据和您想要传递给控制器​​的数据,因此 MVC 中的一个重要部分是根据您的用例创建正确的 ViewModel。

您最后的做法是正确的,但请注意模型中的字段名称必须与模型中的属性名称相同。

根据this,您应该将validation属性添加到您的Comment类中基于您的Form应该命名为的属性

Id
Name
Content

高温高压

于 2013-06-10T17:38:25.887 回答