MVC3のユーザー用のモデルがあります。
public class User
{
[Key]
public virtual Guid UserId { get; set; }
[Required]
public virtual String Username { get; set; }
[DataType(DataType.MultilineText)]
public virtual String Comment { get; set; }
..loads of other properties
このクラスには、編集画面では実際には必要のない情報がたくさん含まれています。comment
の一部だけを編集したいとしましょうuser
。私はこのようなビューモデルを作成しようとしましたが、私がこの権利について行っているかどうかはわかりません
モデルを見る
public class UserViewModel
{
public string notes;
}
今、私は私のコントローラーにこれを持っています:
public ActionResult Edit(Guid id)
{
User user = Context.Users.Where(x => x.UserId == id).First();
UserViewModel uvm = new UserViewModel();
uvm.notes = user.Comment;
return View(uvm);
}
この部分は問題なく機能しているようで、情報が存在する場合は情報を渡します。編集ビューは次のようになります。
@model core.Areas.Manage.Models.UserViewModel
@using (Html.BeginForm()) {
@Html.ValidationSummary(true)
<fieldset>
<legend>User Edit</legend>
@Html.TextBoxFor(model => model.notes)
<p>
<input type="submit" value="Save" />
</p>
</fieldset>
}
これは、コントローラーからのメモ/コメントを示しています。ただし、送信を押すと、モデルはnullになります-model.notes
この時点ではnullです:
[HttpPost]
public ActionResult Edit(Guid id, UserViewModel model)
{
私は完全に間違ったことをしていますか?以前はモデル全体を渡しただけでしたが、これは理想的ではありません。ここで暗闇の中で突き刺すようなものです。SOに移る前に自分で実装しようと思っただけです。