当新的模型实例传递给分部视图时,字段仍然包含表单数据

本文关键字:字段 数据 表单 包含 视图 模型 实例 | 更新日期: 2023-09-27 18:13:25

我有一个局部视图,其中post到服务器使用jquery。这个帖子起作用了。但是,当返回时,我返回带有空白模型(新模型)的partialviewresult,但是返回的HTML仍然包含先前发布的数据。有办法清除申报单上的数据吗?

$("#btnSend").click(function (e) {
    e.preventDefault();
    if($('#frmCompose').valid()) {
        $.ajax({
            type: "POST",
            url: '@Url.Action("PartialCompose", "Message")',
        dataType: "html",
        data: $('#frmCompose').serialize(),
        success: function (result) {
            $("#divTab2").html(result);
        },
        error: function (xhr, s, e) {
            alert('Error');
            alert(xhr.responseText);
        }
        });
    }        
});

动作:

    [SessionExpireFilterAttribute]
    [HttpPost] // POST: /message/partialcompose
    public PartialViewResult PartialCompose(_MessageExt model)
    {
        _MessageExtDAL __DAL = new _MessageExtDAL(base.LoginTimeZoneMin);
        try
        {
            model.MessageId = 0;
            model.AccountId = base.LoginUser.AccountId;
            model.EditBy = base.LoginUser.UserId;
            __DAL.Send(model, Config.SQLConn);
        }
        catch (Exception ex)
        {
            base.Prompt = ex.Message;
        }
        finally
        {
            __DAL = null;
        }
        return PartialView(new _MessageExt());
    }

当新的模型实例传递给分部视图时,字段仍然包含表单数据

这是因为您直接从POST操作返回相同的视图,并且表单值仍然存在于ModelState中。

这是经过设计的,主要是为了与原始表单数据一起显示验证错误。ModelState中的值比传递给视图的模型对象中的值具有更高的优先级,因此如果两者都存在,则使用ModelState中的值。

下面的字段应该被清除:

ModelState.Clear();
return PartialView(new _MessageExt());