'Model'オブジェクト(LinqToSQLによって生成されたオブジェクト)をコントローラにポストすると、 'ModelState.IsValid'をクエリできます。プロパティと値が検証されない場合、 'false'に設定されます。ASP.NET MVCのプレーンオブジェクトで検証が機能しない
しかし、自分のクラスのカスタムオブジェクトを投稿している場合は、そのクラスのプロパティに検証属性があり、値が正しくない場合でも、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; }
}
私はそれがフレームワークではないと思うが、少しのコードがなくても問題の内容を知ることは難しい。 – tvanfosson