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));
}

「記事」ビューに、コメント セクションを含めたいと考えています。ビューで「記事」をモデルとして使用したことに応じて、新しいコメントの詳細を取得するにはどうすればよいですか? 私自身の方法で、新しいコメントの詳細を手動で取得し、「コメント」という名前の別のコントロールの「新規」という名前のアクションに投稿する次のコードのようなフォームを作成しました。正しい方法で行っていますか? このようにして、新しいコメント入力を検証できませんでした。

@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>

新しいコメントを POST するフォームは のフィールドに基づくフォームにCommentViewModelなり、アクション (新規) はCommentViewModelパラメーターとして を持ちます。

このようにして、があなたに代わっModelBinderて仕事をします。

ViewModel は、表示するデータとコントローラーに渡すデータを常に表す必要があることに注意してください。そのため、MVC の重要な部分は、ユース ケースに基づいて適切な ViewModel を作成することです。

最後のアプローチは正しいですが、モデル内のフィールドの名前は、モデル内のプロパティと同じ名前でなければならないことに注意してください。

Commentこれによれば、フォームに基づいて次のように名前を付ける必要があるクラスのプロパティに検証属性を追加する必要があります

Id
Name
Content

HTH

于 2013-06-10T17:38:25.887 に答える