ASP.NET MVC4 1つのビューで複数のモデル
今日は勉強会に参加してきたので、時間とれなくてちょっとしか出来てない。
検索してみたら StackOverflow がヒットしたんで、その情報を元に解決した。
asp.net mvc - Multiple models in a view - Stack Overflow
http://stackoverflow.com/questions/4764011/multiple-models-in-a-view
ビューのコンポーネント化(パーシャルビュー)と Tuple (組みオブジェクト)を使った簡易複合オブジェクトが回答として挙がってる。
当然のごとく Tuple を使った解決策より、パーシャルビューの方がベストアンサーに選ばれてる。
なので、それで実現してみた。
Index.cshtml
@Html.Partial("TweetView", new MyTwitter.Models.Tweet()) @Html.Partial("TweetListView")
TweetView.cshtml
@model MyTwitter.Models.Tweet @using (Html.BeginForm( "Index", // アクション名 "Home", // コントローラ名 FormMethod.Post, // HTTPメソッド(method属性) new { enctype = "multipart/form-data"} // そのほかの属性 )) { @Html.TextBoxFor( model => model.Body, // プロパティ new { size = 15, maxlength = 140 } // そのほかの属性 ) <input type="submit" value="つぶやく" /> }
TweetListView.cshtml
@model IEnumerable<MyTwitter.Models.Tweet> @foreach (var tweet in Model) { <p> @tweet.Body<br/>@tweet.DatePosted </p> }
現実的には問題あるんやけど、これでもオレオレツイートが出来るようになった。
眠いからもう寝る。