如何在mvc-jquery ajax json中添加验证

如何在mvc-jquery ajax json中添加验证,jquery,json,ajax,model-view-controller,Jquery,Json,Ajax,Model View Controller,下面的代码可以工作,使用模式窗口,我可以添加、编辑和删除记录,而无需刷新页面 我试图添加验证,但无效。 如何向以下代码添加验证? 我请求有关验证的帮助 //View Model public class PositionsViewModel { public IEnumerable<Positions> ListPositions { get; set; } public int IdPositions { get; set; }

下面的代码可以工作,使用模式窗口,我可以添加、编辑和删除记录,而无需刷新页面

我试图添加验证,但无效。 如何向以下代码添加验证? 我请求有关验证的帮助

//View Model
public class PositionsViewModel
    {
        public IEnumerable<Positions> ListPositions { get; set; }
        public int IdPositions { get; set; }  
        [MaxLength(50, ErrorMessage = "Name max 50 znaków")]
        [Display(Name = "Positions")]
        [Required(ErrorMessage = "Required position")]
        public string NamePosition { get; set; }
        [Display(Name = "Active")]
        [Required(ErrorMessage = "Zaznacz pole")]
        public bool "Active")]{ get; set; }
    }
//视图模型
公共类位置视图模型
{
公共IEnumerable列表位置{get;set;}
公共int-IdPositions{get;set;}
[MaxLength(50,ErrorMessage=“Name max 50 znaków”)]
[显示(Name=“Positions”)]
[必需(ErrorMessage=“必需职位”)]
公共字符串名称位置{get;set;}
[显示(Name=“活动”)]
[必需(ErrorMessage=“Zaznacz pole”)]
公共bool“Active”)]{get;set;}
}
我使用Json发送数据

 public ActionResult ListPosition()
        {
            var listPosition= db.Position.ToList();
            var viewModel = new PositionViewModel()
            {
                ListPosition = listPosition= 
            };
            return View(viewModel);
        }

 public JsonResult EditPosition( int? idRecord)
            {
                Position position = db.Position.Find(idRecord);
                string value = string.Empty;
                value = JsonConvert.SerializeObject(position, Formatting.Indented, new JsonSerializerSettings
                {
                    ReferenceLoopHandling = ReferenceLoopHandling.Ignore
                });
                return Json(value, JsonRequestBehavior.AllowGet);
            }


        [HttpPost]
        public JsonResult SaveAndEditPosition(PositionViewModel vieModel)
        {
            var result = false;
            if (ModelState.IsValid)
            {
                //New Position
                Position position = new vieModel.Position();
                position.IdPosition = vieModel.IdPosition;
                position.NamePosition,  = vieModel.NamePosition, ;
                position.Active = Active;

                if (position .IdPosition == 0)
                {
                    db.Position.Add((position );
                    result = true;
                }
                else
                {
                    //Edit position
                    db.Entry(position).State = EntityState.Modified;
                    result = true;
                }
                db.SaveChanges();
            }


                result = false;

            return Json(result, JsonRequestBehavior.AllowGet);
        }

//View
@model AplikacjaHelpDesk.ViewModels.PositionViewModel
 <div class="col-sm-5">
        <table align="left" class=" table panel panel-primary panel-title table-responsive">
            <tr class="panel panel-primary" text-transform uppercase; text-combine-upright:all; opacity 0.6;">
                <th>
                    @Html.DisplayNameFor(model => model.NamePosition)
                </th>
                <th style="width: 100px;">
                    @Html.DisplayNameFor(model => model.Active)
                </th>
                <th></th>
            </tr>

            @foreach (var item in Model.ListPositions )
            {
                <tr>

                    @Html.HiddenFor(modelItem => item.IdPosition, new { @id = "PositionId" })

                    <td>
                        @Html.DisplayFor(model => item.NamePosition)
                    </td>
                    <td>
                        @Html.DisplayFor(model => item.Active)
                    </td>
                    <td style="width: 220px;">
                        <span class="btn btn-primary glyphicon glyphicon-pencil ">
                            <a href=" #" onclick='EditRecordPosition(id = "@item.Position")' style="color:white">Edit</a>
                        </span>
                    </td>
                </tr>

            }
        </table>
    </div>

 <div class="modal fade" id="MyModal">
        <div class="modal-dialog">
            <div class="modal-content">
                <div class="modal-header">
                    <a href="#" class="close" data-dismiss="modal">&times;</a>
                    <h4 id="ModalTitle"></h4>
                </div>
                <div class="modal-body">
                    <form id="form">                                                
                            <fieldset id = "SubmitForm">   

                                @Html.ValidationSummary(true, "", new { @class = "text-danger" })
                                @Html.HiddenFor(m => m.IdPosition, new { @id = "PositionId" })
                                <div class="form-group">
                                    @Html.DisplayNameFor(model => model.NamePosition)<br /> 
                                    @Html.TextBoxFor(m => m.NazwaStanowiska, new { @id = "NamePosition", @class = "form-control", @placeholder = "Name Position" })
                                    @Html.ValidationMessageFor(m => m.NamePosition, "")
                                </div>
                                <div class="form-group">
                                    @Html.DisplayNameFor(model => model.Active)<br />
                                    @Html.CheckBoxFor(m => m.CzyAktywny, new { @id = "PositionActive" })
                                    @Html.ValidationMessageFor(m => m.Active, "")
                                </div>
                                <div class="col-md-2">
                                    <a href="#" class="btn btn-block btn-danger" onclick="SaveRecordToDataBase()">Save  </a>
                                </div>
                            </fieldset>                        
                    </form>
                </div>
            </div>
        </div>
    </div>

<script>


function AddNewPosition(IdPosition) {
        $("#form")[0].reset();
        $("#PositionId").val(0);
        $("#ModalTitle").html("Add new position");
        $("#MyModal").modal();

    }

 var SaveRecordToDataBase = function () {
        var data = $("#SubmitForm").serialize();

        if (!$("#SubmitForm").valid())
        {
            return false;
        }
        $.ajax({
            type: "POST",
            url: "SaveAndEditPosition",
            data: data,
            success: function (result) {
                $("#MyModal").modal("hide");
                $("#confirmSave").modal("show");
                setTimeout(function () { window.location.href = "/Position/ListPosition" }, 2000);
            }
        })
    }


 function EditRecordPosition(IdPosition) {
        var url = "/Position/EditPosition?idRecord=" + IdPosition;
        $("#ModalTitle").html("Uaktualnij stanowisko");
        $("#MyModal").modal();
        $.ajax({
            type: "GET",
            url: url,
            success: function (data) {
                var obj = JSON.parse(data);
                $("#PositionId").val(obj.IdPosition);
                $("#NamePosition").val(obj.NamePosition);
                $("#PositionActive").val(obj.Active);
            }
        })

    }
</script>
public ActionResult ListPosition()
{
var listPosition=db.Position.ToList();
var viewModel=新位置viewModel()
{
ListPosition=ListPosition=
};
返回视图(viewModel);
}
公共JsonResult编辑位置(int?idRecord)
{
位置=db.Position.Find(idRecord);
字符串值=string.Empty;
value=JsonConvert.SerializeObject(位置、格式、缩进、新JsonSerializerSettings
{
ReferenceLoopHandling=ReferenceLoopHandling.Ignore
});
返回Json(值,JsonRequestBehavior.AllowGet);
}
[HttpPost]
公共JsonResult保存和编辑位置(位置视图模型vieModel)
{
var结果=假;
if(ModelState.IsValid)
{
//新职位
位置=新的vieModel.Position();
position.IdPosition=vieModel.IdPosition;
position.NamePosition,=vieModel.NamePosition;
位置。激活=激活;
if(position.IdPosition==0)
{
db.Position.Add((位置);
结果=真;
}
其他的
{
//编辑位置
db.Entry(position).State=EntityState.Modified;
结果=真;
}
db.SaveChanges();
}
结果=假;
返回Json(结果,JsonRequestBehavior.AllowGet);
}
//看法
@模型AplikacjaHelpDesk.ViewModels.PositionViewModel

您不显示任何对
位置视图模型的使用。这是一个对象,它知道什么是有效的和无效的,以及要显示什么消息。您也可以显示视图代码吗?我添加到代码中。@model AplikacjaHelpDesk.ViewModels.StanowiskaViewModel和方法ListPosition到控制器的可能重复我需要一个特定的示例,因为建议的解决方案不起作用。我认为问题是,你调用if(ModelState.IsValid),但是你没有一个可以有效的模型。因为你得到一个int,string和bool。