C#MVC Ajax模式验证-500内部服务器错误

问题描述 投票:0回答:1

我不是很确定为什么这行不通,我在项目的不同部分有完全相同的东西,我得到“ POST” 500(内部服务器错误),我只是试图得到@using( Ajax.BeginForm(验证是否可以在模式上工作。就像我说的那样,我已经在项目的不同部分上工作了,并且可以正常工作。我的模式已成功填充,但是当我单击“提交”按钮时,我得到了上面的错误。查看模态和模态的控件我有

HtmlHelper.UnobtrusiveJavaScriptEnabled = true;

我的代码中有所有这些库。

<script src="/Scripts/jquery-3.3.1.js"></script>
<script src="/Scripts/jquery-ui-1.12.1.js"></script>
<script src="/Scripts/jquery.unobtrusive-ajax.js"></script>
<script src="/Scripts/jquery.validate.js"></script>
<script src="/Scripts/jquery.validate.unobtrusive.js"></script>
<script src="/Scripts/bootstrap.js"></script>
<script src="/Scripts/respond.js"></script>

@using (Ajax.BeginForm("PartNumberUpdate", "Parts", new AjaxOptions() { HttpMethod = "POST", UpdateTargetId = "PartNumControls", OnSuccess = "ajaxPartUpdate" }))
{
    <div class="modal" id="modalPNUpdate" tabindex="-1" role="dialog" aria-labelledby="lblPNUpdate" aria-hidden="true">
        <div class="modal-dialog" role="document">
            <div class="modal-content">
                <div class="modal-header">
                    <h3 class="modal-title">Part Number Details</h3>
                    <button type="button" class="close" data-dismiss="modal" aria-label="Close">
                        <span aria-hidden="true">&times;</span>
                    </button>
                </div>
                <div class="modal-body" id="PartNumControls">
                    @Html.Partial("PNControls")
                </div>
                <div class="modal-footer">
                    <button type="button" class="btn btn-danger" data-dismiss="modal">Close</button>
                    <input type="submit" class="btn btn-primary" value="Save" />
                </div>
            </div>
        </div>
    </div>
}
        [HttpPost]
        [ValidateAntiForgeryToken]
        [HandleError]
        public ActionResult PartNumberUpdate(FindPartModel model)
        {
            if (ModelState.IsValid)
            {
                var partNumber = context.PartNumbers.Where(x => x.PartNumber1 == model.PartVM.PartNumber).FirstOrDefault();
                partNumber.PartNumber1 = model.PartVM.PartNumber;

                /// UPDATE PartNumber Record
                context.Entry(partNumber).State = EntityState.Modified;
                context.SaveChanges();
                string returnStr = "refresh";
                ModelState.Clear();
                return Json(returnStr);
            }
            return PartialView("PNControls", model);
        }

        public ActionResult PNControls()
        {
            return View(new FindPartModel());
        } 
c# ajax asp.net-mvc asp.net-ajax
1个回答
0
投票
    [HttpPost]
    [ValidateAntiForgeryToken]
    [HandleError]
    public ActionResult PartNumberUpdate(FindPartModel model){/*skip*/}

您在操作上方添加了[ValidateAntiForgeryToken]

但是您的视图中没有@Html.AntiForgeryToken()

@using (Ajax.BeginForm("PartNumberUpdate", "Parts", new AjaxOptions() { HttpMethod = "POST", UpdateTargetId = "PartNumControls", OnSuccess = "ajaxPartUpdate" })){
    @Html.AntiForgeryToken() //Add me
    //skip
}
© www.soinside.com 2019 - 2024. All rights reserved.