如何使用数据注释对模型进行条件验证?
例如,假设我们有以下模型(Person和Senior):
public class Person
{
[Required(ErrorMessage = "*")]
public string Name
{
get;
set;
}
public bool IsSenior
{
get;
set;
}
public Senior Senior
{
get;
set;
}
}
public class Senior
{
[Required(ErrorMessage = "*")]//this should be conditional validation, based on the "IsSenior" value
public string Description
{
get;
set;
}
}
Run Code Online (Sandbox Code Playgroud)
以下观点:
<%= Html.EditorFor(m => m.Name)%>
<%= Html.ValidationMessageFor(m => m.Name)%>
<%= Html.CheckBoxFor(m => m.IsSenior)%>
<%= Html.ValidationMessageFor(m => m.IsSenior)%>
<%= Html.CheckBoxFor(m => m.Senior.Description)%>
<%= Html.ValidationMessageFor(m => m.Senior.Description)%> …Run Code Online (Sandbox Code Playgroud) 我在尝试使用不显眼的jquery验证来处理通过AJAX调用动态加载的局部视图时遇到问题.
我花了几天时间试图让这段代码运转起来没有运气.
这是视图:
@model MvcApplication2.Models.test
@using (Html.BeginForm())
{
@Html.ValidationSummary(true);
<div id="res"></div>
<input id="submit" type="submit" value="submit" />
}
Run Code Online (Sandbox Code Playgroud)
部分视图:
@model MvcApplication2.Models.test
@Html.TextAreaFor(m => m.MyProperty);
@Html.ValidationMessageFor(m => m.MyProperty);
<script type="text/javascript" >
$.validator.unobtrusive.parse(document);
</script>
Run Code Online (Sandbox Code Playgroud)
该模型:
public class test
{
[Required(ErrorMessage= "required field")]
public int MyProperty { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
控制者:
public ActionResult GetView()
{
return PartialView("Test");
}
Run Code Online (Sandbox Code Playgroud)
最后,javascript:
$(doument).ready(function () {
$.ajax({
url: '/test/getview',
success: function (res) {
$("#res").html(res);
$.validator.unobtrusive.parse($("#res"));
}
});
$("#submit").click(function () {
if ($("form").valid()) {
alert('valid');
return true;
} …Run Code Online (Sandbox Code Playgroud) 我正在使用自定义验证属性并希望显示我的验证消息,我将在其中指定一个名称,如下所示:
return new ValidationResult(FormatErrorMessage("Hobbies"));
Run Code Online (Sandbox Code Playgroud)
我发现这个 html 在页面上:
<span data-valmsg-replace="true" data-valmsg-for="Hobbies" class="field-validation-valid text-danger"></span>
Run Code Online (Sandbox Code Playgroud)
当我像这样从类的IsValid函数返回消息时ValidationAttribute:
return new ValidationResult(FormatErrorMessage("Hobbies"));
Run Code Online (Sandbox Code Playgroud)
在我指定名称“爱好”的地方,应该将其添加到
<span data-valmsg-for="Hobbies">
Run Code Online (Sandbox Code Playgroud)
为什么没有添加我的错误信息?
如果你想让我粘贴完整的代码,请告诉我。