首页 > 解决方案 > 向后面的代码发出 ajax 请求时,属性值设置为默认值

问题描述

在我正在处理的 Web 应用程序中,有一个 ascx 用户控件,其代码隐藏具有以下代码实现。

public partial class Admin_Controls_PicturePicker : System.Web.UI.UserControl
{
    public string Root
    {
        get
        {
            return ResolveClientUrl("~/");
        }
    }
    public RelatedObject RelatedObjectType { get; set; }
    public int RelatedObjectId { get; set; }
    public string PictureListContainerId { get; set; }



    protected void Page_Load(object sender, EventArgs e)
    {
        if (Request.RequestType == "POST" && Request.Form["action"] == "savePicture")
        {
            SavePicture();
        }
    }
}

当页面加载时,RelatedObjectId被初始化为查询字符串参数。

在 ascx 中,我在按钮单击中完成了 ajax 发布,将表单数据提交到代码隐藏。ajax 实现如下:

var url = "/Admin/HotelDetails.aspx";
$.ajax({
    type: "POST",
    url: url,
    contentType: false,
    processData: false,
    data: formData,
    success: function (responseText) {
        if (responseText == "") {
            $("#divAddPictureDialog").dialog("close");
            reloadPictures();
        }
        else {
            $("#spnPictureStatus").html(responseText);
        }
    }
});

但是虽然没有任何页面重新加载并且没有刷新页面的功能,但是当ajax发布完成时。.cs 文件中的所有值都将被删除。它们被设置为默认值。即:RelatedObjectId变成0

但是,formdata 中的值已正确提交。

但是,在$("#frmPicture").ajaxSubmit({});使用 jquery.form 库之前,没有这样的问题。

普通的 ajax 帖子和 ajaxSubmit 有什么问题?使用 ajax 帖子将该值设置为默认值的原因可能是什么?什么是解决方法?

标签: jqueryasp.net.netajaxascx

解决方案


推荐阅读