ASP.NET MVC アプリケーションでは、次のように定義されたモデルがあります。
public class TestModel
{
private string _firstName;
[DisplayName("First Name")]
[StringLength(20)]
public string FirstName
{
get { return _firstName; }
set
{
if (!string.IsNullOrEmpty(value))
if (value.Length > 20)
throw new Exception("Too long");
_firstName = value;
}
}
}
コントローラーの更新アクション メソッドには、次のコードがあります。
[HttpPost]
public ActionResult Update()
{
var tm = new TestModel();
if (ModelState.IsValid)
{
if (TryUpdateModel(tm))
{
// Save to the DB
}
}
return View("Test", tm);
}
問題は、ビューのテキスト ボックスに 20 文字を超える値を入力すると、MVC がモデルにプロパティを設定しようとしないことを期待していることです (長すぎてモデルに収まらないため、例外がスローされます)。 DB 列)。実際にプロパティを設定しようとする前に、ModelState.IsValid テストによって停止されると思っていたでしょう。
ここで実際の ORM (LLBLGenPro) をシミュレートしていることに注意してください。これは、長さのあるデータベース列に対して生成されたプロパティに対して行うことです。長すぎる値を設定しようとすると、例外がスローされます。
LLBLGen のテンプレートを変更する以外に、この問題を解決するにはどうすればよいですか?
これは ASP.NET MVC の通常の動作ですか?