モデルを作成Message
し、これらのメッセージのリストをIndex
自分のサイトに表示しました。コントローラはIEnumerable<Models.Message>
オブジェクトをビューに渡します。
これらすべてのメッセージを表示するために、を使用してメッセージを繰り返し処理しています@foreach
。Index
ただし、同じビューでフォームを作成して、新しいメッセージを作成したいと思います。簡単な作業のようですが、を呼び出すと@Html.TextAreaFor(Model.Body)
次のエラーが発生します。
CS1061: 'System.Collections.Generic.IEnumerable<Models.Message>' does not contain a definition for 'Body' and no extension method 'Body' accepting a first argument of type 'System.Collections.Generic.IEnumerable<Models.Message>' could be found (are you missing a using directive or an assembly reference?)
Models.Message
に基づいて作成されたビューであるにもかかわらず、に基づいてフォームを作成することは可能IEnumerable<Models.Message>
ですか?
私のモデルは:
public class Message
{
[BsonId]
public ObjectId Id { get; set; }
public Citizen From { get; set; }
public Citizen To { get; set; }
[Required]
[AllowHtml]
public string Body { get; set; }
[ScaffoldColumn(false)]
public DateTime Date { get; set; }
public bool IsPrivate { get; set; }
}
編集:率直に言って、フォーム用の1つのメッセージと表示用のメッセージのリストを保持する追加のモデルを作成したくありません。ほとんどの場合、フォームアクションコントローラーでは、この「拡張」モデルを処理する必要があるためです。そこにオリジナルがあるほうがきれいだと思いますMessage
。
しかし、どのように?