我第一次使用MVC 4。我的业务逻辑有点复杂,但我想不会那么罕见。我有可以在特定范围内调整大小的项目。范围取决于项目。
public class MyItem
{
public double Width { get; set; }
public double MinWidth { get; set; }
public double MaxWidth { get; set; }
}
用户设置时, CustomWidth
必须包含MinWidth
和MaxWidth
。这似乎是一个常见的问题。我已经尝试了CustomValidation
属性,但只有当我尝试将实体保存到我的数据库时才会验证(使用实体框架)。
这是我正在使用的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>
}
答案 0 :(得分:5)
要进行自定义验证,您希望从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
}
}