[Required] 属性が設定された一連のプロパティを持つ UserModel を含む UserFormModel があります。MVC 3 をそのまま使用すると、デフォルトでモデル内のモデルが検証されることを読みました。ただし、空の UserModel を含む UserFormModel を返すビューで空のフォームを送信すると、ModelState.IsValid は常に true になります。
UserModel だけをコントローラーに送り返してみましたが、問題はありません。検証されていないのは、複雑なモデルを扱っているときだけのようです。
UserFormModel 内の User プロパティの [Required] 属性を使用して試してみましたが (これは、デフォルトの動作が機能するために必要ではないと思います)、それでも検証は行われません。
これに関するアイデアは大歓迎です。
public class UserFormModel
{
public UserModel User;
public IEnumerable<SelectListItem> Roles { get; set; }
}
public class UserModel : ModelBase
{
[Required]
public string UserName { get; set; }
public string Title { get; set; }
[Required]
public string FirstName { get; set; }
[Required]
public string LastName { get; set; }
}
[HttpPost]
public ActionResult Create(UserFormModel userFormModel)
{
if (ModelState.IsValid)
{
// Do Something
}
}