'Model'オブジェクト(LinqToSQLによって生成されたもの)をコントローラーに投稿すると、'ModelState.IsValid'をクエリできます。いずれかのプロパティに検証属性があり、値が検証されない場合は、設定されます。 'false'に。
ただし、自分のクラスのカスタムオブジェクトを投稿する場合、そのクラスのプロパティに検証属性があり、誤った値が指定されている場合でも、ModelState.IsValidは常に「true」を返すようです。
これがDataContextモデルオブジェクトでのみ機能するのはなぜですか?これらのオブジェクトがModelState.IsValidで機能するのに、通常のクラスでは機能しないのはどういうことですか?
通常のクラスで動作させるにはどうすればよいですか?
コントローラーコード:
[AcceptVerbs(HttpVerbs.Post)]
public ActionResult LogIn(MyProject.Website.ViewModels.Shared.LogIn model)
{
if (ModelState.IsValid)
return View(model);
// ... code to log in the user
}
ViewModelコード:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.ComponentModel.DataAnnotations;
using MyProject.Website.Validators;
using System.ComponentModel;
public class LogIn
{
public LogInModes LogInMode { get; set; }
[Required]
[EmailAddress]
public string EmailAddress { get; set; }
public string Password { get; set; }
public bool RememberMe { get; set; }
public string ReturnUrl { get; set; }
}