6

初めてMVC 4を使用しています。少し複雑なビジネス ロジックがありますが、それほど珍しいことではないと思います。特定の範囲内でサイズ変更できるアイテムがあります。範囲はアイテムによって異なります。

public class MyItem
{
    public double Width { get; set; }

    public double MinWidth { get; set; }

    public double MaxWidth { get; set; }
}

CustomWidthユーザーが設定するときは、範囲内MinWidthかつMaxWidth包括的である必要があります。これはよくある問題のようです。属性を試しCustomValidationましたが、エンティティをデータベースに保存しようとしたときにのみ検証されます (Entity Framework を使用)。

これは私が取り組んでいる Razor ページです。

@using (Html.BeginForm("Action", "Controller", FormMethod.Post)) { 
<aside id="aside">
    <div class="editor-label">
        @Html.LabelFor(model => model.Width)
    </div>
    <div class="editor-field">
        @Html.EditorFor(model => model.Width)
        @Html.ValidationMessageFor(model => model.Width)
    </div>  

    <div class="editor-label">
        @Html.LabelFor(model => model.Height)
    </div>
    <div class="editor-field">
        @Html.EditorFor(model => model.Height)
        @Html.ValidationMessageFor(model => model.Height)
    </div>

    <div class="editor-label">
        @Html.LabelFor(model => model.Depth)
    </div>
    <div class="editor-field">
        @Html.EditorFor(model => model.Depth)
        @Html.ValidationMessageFor(model => model.Depth)
    </div>

    <input type="submit" value="save" />
</aside>
}
4

1 に答える 1

8

カスタム検証を行うには、から継承しIValidatableObjectます。

**最初のモデル検証が成功した後にカスタム検証が行われることに注意してください

    public class MyItem : IValidatableObject
        {
            public double Width { get; set; }

            public double MinWidth { get; set; }

            public double MaxWidth { get; set; }
            public IEnumerable<ValidationResult> Validate(ValidationContext validationContext)
           {
                // Custom validation
           }

}

使用方法の例

于 2013-03-14T20:28:04.250 に答える