MVCデータアノテーション-必須フィールドが機能しない
-
06-07-2019 - |
質問
こんにちは、アプリ全体に次のタラがありますが、2つのフィールドしかありません。
[Required]
public string DevelopmentPM { get; set; }
次のテストが実行され、合格します。
[TestMethod]
public void SiteConstruction_MODEL_DevelopmentPM_Is_Required()
{
//arrange
var propertyInfo = typeof(SiteConstructionMetadata).GetProperty
("DevelopmentPM");
//act
var attribute = propertyInfo.GetCustomAttributes(typeof(RequiredAttribute),
true).Cast<RequiredAttribute>().FirstOrDefault();
//assert
Assert.IsNotNull(attribute);
}
私のコントローラーは次のようになります:
TryUpdateModel(siteConstruction);
if (!ModelState.IsValid)
return View(siteConstruction);
モデルに他の必須フィールドがあり、それらは問題ありません。このフィールドはnullです(チェックしました)が、モデルが無効になることはありません。したがって、検証と保存時のエラーはありません。
マイビュー
<li>
<label for="DevelopmentPM">
<strong>Development PM:</strong></label>
<%= Html.TextBox("DevelopmentPM") %>
<%= Html.ValidationMessage("DevelopmentPM", "*") %>
</li>
.dbml(Linq to SQl)を確認しましたが、スペルは問題ありません。
簡単なものが足りない-気をつけてください。
ありがとう
Davy
解決
[MetadataType(typeof(SiteConstructionMetadata))]]私の部分クラスの上に、私はそこにそれを持っていたのは当然だと思った。
次回は、スニペットを投稿する代わりに、すべてを投稿すると思います-smeone wousはそれをかなり早く見つけました。
Davy
他のヒント
DataAnnotationsModelBinder
もデフォルトのモデルバインダーにしてください。 Global.asax.cs
に次を追加します。
ModelBinders.Binders.DefaultBinder = new Microsoft.Web.Mvc.DataAnnotations.DataAnnotationsModelBinder();
そして、プロジェクトで System.ComponentModel.DataAnnotations.dll
アセンブリを参照していることを確認してください。詳細については、このチュートリアルをご覧ください。
所属していません StackOverflow