質問

こんにちは、アプリ全体に次のタラがありますが、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 アセンブリを参照していることを確認してください。詳細については、このチュートリアルをご覧ください。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top