UpdateModel()
アプリを ASP.NET MVC 1 から MVC 3 に変換していますが、フォームを送信するときに呼び出すときに問題が発生しました。
ここに私のモデルクラスがあります:
public class TestModel
{
public string Name { get; set; }
public string Description { get; set; }
public int Age { get; set; }
public int? SubValue { get; set; }
public int AgeSub
{
get
{
return SubValue.Value - Age;
}
}
}
そして私のコントローラーで:
[AcceptVerbs(HttpVerbs.Post)]
public ActionResult TestModelSave()
{
TestModel tm = new TestModel();
try
{
UpdateModel(tm);
if (ModelState.IsValid)
{
return RedirectToAction("TestModelEdit");
}
}
catch
{
}
return View("TestModelEdit", tm);
}
送信時に SubValue を null のままにすると、MVC 1 で正常に動作します。しかし、MVC 3 では、呼び出すと、TestModel クラスUpdateModel(tm)
の行で例外がスローされます。return SubValue.Value - Age;
に行って変更SubValue.Value
することもできますSubValue.GetValueOrDefault()
が、そうする必要はありません。MVC のバージョン間でこの変更が行われたのはなぜですか?