我正在尝试使用远程验证来确保输入具有值,但是仅当先前输入具有特定值时才可以。但是,没有进行远程验证。
我已经在控制器中的远程验证操作上设置了一个断点,但是从来没有遇到。
这是我的模型:
[Remote("_Validate_Show", "Validation", AdditionalFields = "Group_Id,Dev_Group_Id", ErrorMessage = "Please select an option")]
public bool? Show { get; set; }
这是我的控制者:
public class ValidationController
{
public JsonResult _Validate_Show(bool? Show, Guid? Group_Id, Guid Dev_Group_Id)
{
if (!Show.HasValue && Group_Id.HasValue && Group_Id == Dev_Group_Id)
{
return base.Json(false, JsonRequestBehavior.AllowGet);
}
return base.Json(true, JsonRequestBehavior.AllowGet);
}
}
这就是我的看法:
<div>@Html.ExtendedDropDownListFor(model => model.Group_Id, Model.Group_Ids)</div>
<div>@Html.DropDownListFor(model => model.Show, Model.Show_Options)</div>
<div>@Html.ValidationMessageFor(model => model.Show)</div>
基本上,如果“ Group_Id”是“ Dev_Group_Id”,那么“显示”必须具有一个值,但是如果“ Group_Id”不是“ Dev_Group_Id”,则“显示”可以为空。
我什至试图简化它并删除其他字段,所以它只是检查了“显示”值,但控制器中的动作再也没有被击中。
我还可以确认自己拥有以下脚本:
<script src="@Url.Content("~/Scripts/jquery.min.js")"></script>
<script src="@Url.Content("~/Scripts/jquery.validate.min.js")"></script>
<script src="@Url.Content("~/Scripts/jquery.validate.unobtrusive.min.js")"></script>
答案 0 :(得分:0)
您的_Validate_Show
仅获得使用,而远程验证则使用post。将[AcceptVerbs("Get", "Post")]
添加到方法viz:
[AcceptVerbs("Get", "Post")]
public JsonResult _Validate_Show(bool? Show, Guid? Group_Id, Guid Dev_Group_Id)
{
if (!Show.HasValue && Group_Id.HasValue && Group_Id == Dev_Group_Id)
{
return base.Json(false, JsonRequestBehavior.AllowGet);
}
return base.Json(true, JsonRequestBehavior.AllowGet);
}