【问题标题】:Change Image Src from child pop doesn't affect code behind从子弹出更改图像 Src 不会影响后面的代码
【发布时间】:2017-12-14 17:27:57
【问题描述】:

我有父 Web 表单,其中有图像。 我虽然点击时表单中的链接我打开新弹出窗口包含另一个这样的页面:

        function openPopUp() {
        popup = window.open("/CropImage.aspx", "Popup", "width=700,height=700");
        popup.focus();
    }

在子弹出页面中,我选择图像并通过设置父页面图像src再次将其传递给父页面。

opener.document.getElementById("tile_Image").src = "/Path/imageName.jpg" ;

父页面图像已经更改,但是当我从后面的代码访问它时,我发现没有图像的 src。

我该如何解决这个问题?

【问题讨论】:

    标签: c# asp.net image webforms popup


    【解决方案1】:

    该值在服务器上不可见,因为没有任何东西将其发送到服务器。

    JavaScript 在客户端执行, 服务器端代码已经完成执行并将生成的页面交付给客户端。因此,您不能期望在呈现页面时从代码隐藏中访问此值。然后在回发中,只有从表单元素发布到服务器的更改对服务器可用。因此,您不能期望在页面发布后从代码隐藏中访问此值。

    发布到服务器的数据位于表单字段中。页面的整个 HTML 不会发布到服务器。

    如果您想将其包含在表单字段中,请在页面的某处放置隐藏字段之类的内容:

    <asp:Hidden runat="server" ID="imageValue" />
    

    然后在您的 JavaScript 中,您还可以设置该表单字段的值:

    opener.document.getElementById("tile_Image").src = "/Path/imageName.jpg";
    opener.document.getElementById("<%=imageValue.ClientID%>").value = "/Path/imageName.jpg";
    

    【讨论】:

    • 我试过这个解决方案 bu pop child can't find the hidden element ,这是错误(他的名字'imageValue'在当前上下文中不存在)
    • @AhmedEmad:这些是在不同的页面上吗?哪个页面是回发到您希望可以访问该值的服务器的页面?
    • 是的,有 2 个不同的页面,一个是父页面,另一个是弹出子页面。我从弹出窗口转移到父页面,然后我在父页面中回发以获取转移的 src 值。
    • @AhmedEmad:我正在努力描绘这里的数据流。但是无论你怎么做,你都需要将值放入表单元素中。也许表单元素应该在主页上?它需要在要发布到服务器的任何页面上,当然它只能在该页面服务器端引用。如果您需要引用其他页面上的元素,您可以对 ClientID 值进行硬编码。
    • 感谢大卫的支持。我听了父子中的 src 更改事件,当它更改时,我更改了隐藏的值,它工作得很好。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-08-23
    相关资源
    最近更新 更多