window.parent.location.href无法在asp.net中使用ajaxcontroltoolkit

时间:2012-06-26 12:45:47

标签: javascript ajaxcontroltoolkit registerstartupscript clientscript

我正在使用iframe从父页面打开新的.aspx页面。子页面使用的是ajaxcontroltoolkit(ajax CalendarExtender)。现在在表单提交上,我想关闭iframe并返回到父页面。为此,我使用以下代码。

ClientScript.RegisterStartupScript(this.GetType(), "scriptid", window.parent.location.href='ViewVendors.aspx'", true);

如果我从子页面中删除ajax控件但不能使用ajax控件,则此工作文件。 我想使用calenderExtender和iframe。我该如何使用它以及这种所谓的异常行为的问题是什么。

这是我的提交按钮事件处理程序的代码。

protected void btnUpdate_Click(object sender, EventArgs e)
{
    try
    {
        objVendor.VendorID = Convert.ToInt64(Request.QueryString["Id"]);
        objVendor.Name = txtName.Text;
        objVendor.BillingAddress = txtBillingAddress.Text;
        objVendor.ShippingAddress = txtShippingAddress.Text;
        objVendor.ContactPersonName = txtContactPerson.Text;
        objVendor.ContactNumber = txtContactNumber.Text;
        objVendor.EmailID = txtEmailID.Text;
        objVendor.VendorSinceDate = Convert.ToDateTime(txtVendorDate.Text);
        objVendor.IsActive = Convert.ToBoolean(rdblStatus.SelectedValue);
        objVendor.Logo = FileUpload();
        int intResult = objVendor.UpdateVendor();
        if (intResult > 0)
        {
            ScriptManager.RegisterStartupScript(this.Page, this.GetType(), "window.parent.location.href='ViewVendors.aspx'", "scriptid", true);
            //ClientScript.RegisterStartupScript(this.GetType(), "scriptid", "window.parent.location.href='ViewVendors.aspx'", true);
        }
    }
    catch (Exception ex)
    {
        lblMessage.Text = ex.Message;
        lblMessage.CssClass = "ERROR";
    }
}

//编辑 现在我的代码工作正常,只要我没有将日历扩展器添加到子页面。 当我在子页面中添加日历扩展程序时,它显示错误“控件集合无法修改,因为控件包含代码块(即<%...%>)”。如果我删除压延机扩展器,它再次运行良好。通过做一些谷歌搜索,我发现< %%>在Javascript标签中创建问题。我怎样才能解决这个问题?为什么日历控制会在这种情况下产生问题呢?

这是我脚本的代码。

<script type="text/javascript">
    function uploadStarted() {
        $get("imgDisplay").style.display = "none";
    }
    function uploadComplete(sender, args) {
        var imgDisplay = $get("imgDisplay");
        //  var imgPhoto = $get("#imgPhoto");
        var imgPhoto = document.getElementById('<%=imgPhoto.ClientID %>');
        imgDisplay.src = "images/loader.gif";
        imgPhoto.style.display = "none";
        imgDisplay.style.cssText = "";
        var img = new Image();
        img.onload = function () {
            imgDisplay.style.cssText = "height:100px;width:100px";
            imgDisplay.src = img.src;
        };
        img.src = "<%=ResolveUrl(UploadFolderPath) %>" + args.get_fileName();

    }
</script>

1 个答案:

答案 0 :(得分:1)

您需要使用页面上的ScriptManager实例注册JavaScript - 如果您使用的是AJAX,则应该已经拥有该实例。它有自己的RegisterStartupScript方法,你可以使用它。