加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > asp.Net > 正文

ASP MVC-3:在发布帖子后更新AJAX表单数据时出现问题

发布时间:2020-12-16 06:25:36 所属栏目:asp.Net 来源:网络整理
导读:在提交后通过 AJAX更新for时出现以下问题.由于某种原因,返回的 HTML上的一些隐藏字段没有被更新,这很奇怪,因为当我运行调试器时,它们似乎具有正确的值. 这是我表格的相关部分 div id="itemPopUpForm" @{Html.EnableClientValidation();} @Html.ValidationSum
在提交后通过 AJAX更新for时出现以下问题.由于某种原因,返回的 HTML上的一些隐藏字段没有被更新,这很奇怪,因为当我运行调试器时,它们似乎具有正确的值.

这是我表格的相关部分

<div id="itemPopUpForm">
    @{Html.EnableClientValidation();}
    @Html.ValidationSummary()
    <div id="formDiv">
        @{ Html.RenderPartial("ItemData",Model,new ViewDataDictionary() { { "Machines",ViewBag.Machines },{ "WarehouseList",ViewBag.WarehouseList },{ WebConstants.FORM_ID_KEY,@ViewData[WebConstants.FORM_ID_KEY] } }); }
    </div>
</div>

然后局部视图包含这些隐藏字段,这些字段是未更新的字段

@using (Html.BeginForm("Index","Item",FormMethod.Post,new { id = "frmItem",name = "frmItem" }))
{ 
    @Html.AntiForgeryToken()
    @Html.HiddenFor(model => model.Item.SodID)
    @Html.HiddenFor(model => Model.Item.ItemID) //The itemID needs updating when an item is copied
    @Html.HiddenFor(model => model.Item.Delivery.DeliveryAddressID,new { @id = "delAddressID" })

这是更新表单的javascript方法

function ajaxSave() {
        if (!itemValid()) return; 
        popup('ajaxSplash');
        $.ajax({
            type: "POST",url: '@Url.Action("Index")',data: $("#frmItem").serialize(),success: function (html) {
                console.log(html);
                $("#formDiv").html(html);
                initItemPage();
                alert("Item was saved successfully");
            },error: function () { popup('ajaxSplash'); onFailure(); }
        });
    }

动作索引返回部分视图“ItemData”,当我检查项目模型时,它确实具有正确的值,但是当我看到返回的html时,它仍然设置为0.

解决方法

如果您打算在POST操作中修改模型属性,请不要忘记先从ModelState中删除它,否则HTML帮助程序将在渲染时使用原始发布的值:

[HttpPost]
public ActionResult Index(MyViewModel model)
{
    // remove the value from modelstate
    ModelState.Remove("Item.ItemID");

    // update the value
    model.Item.ItemID = 2;   

    return PartialView(model);
}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读