没有击中远程验证

时间:2019-04-05 11:18:42

标签: remote-validation

我正在尝试使用远程验证来确保输入具有值,但是仅当先前输入具有特定值时才可以。但是,没有进行远程验证。

我已经在控制器中的远程验证操作上设置了一个断点,但是从来没有遇到。

这是我的模型:

[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>

1 个答案:

答案 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);
        }