Scriptmanager在一个页面上,Panel在另一个页面上

本文关键字:Panel 另一个 一个 Scriptmanager | 更新日期: 2023-09-27 18:12:43

我有一个。master页面

   <asp:ScriptManager ID="ScriptManager" runat="server" />
        <asp:UpdatePanel runat="server" id="UpdatePanel" updatemode="Conditional">
            <ContentTemplate>
                <asp:ContentPlaceHolder ID="MasterIndhold_Member" runat="server">
                </asp:ContentPlaceHolder>

在ContentPlaceHolder里面我有一个带有FileUpload的Panel。问题是FileUpload找不到文件。在这里,我想添加RegisterAsyncPostBackControl到Scriptmanager,但我如何做到这一点,当面板是在另一个页面?

嵌套页面代码如下所示

<asp:Content ID="Content3" ContentPlaceHolderID="MasterIndhold_Member" runat="server">
    <asp:panel runat="server" ID="Panel_MyProfile_Member" Visible="false">
        <asp:FileUpload ID="File1" runat="server" />
            <asp:LinkButton ID="LinkUploadImageMember" runat="server" onclick="LinkUploadImageMember_Click">Upload</asp:LinkButton>

FileUpload的CodeBehind是这样的

protected void LinkUploadImageMember_Click(object sender, EventArgs e)
    {
        if (File1.HasFile == true)
        {
            if ((File1.PostedFile.FileName.EndsWith(".jpg")) || (File1.PostedFile.FileName.EndsWith(".jpeg")) || (File1.PostedFile.FileName.EndsWith(".png")))
            {
                    byte[] input = File1.FileBytes;
                    Bruger.UploadImage(input, int.Parse(Request.QueryString["ID"]));
            }
        }
    }

请保持代码示例c#和ASP。因为我是新手^^

谢谢

Scriptmanager在一个页面上,Panel在另一个页面上

您也可以使用ScriptManagerProxy类,如果您需要在您的内容页面上的ScriptManager,但我不确定是否需要它。你真的需要在每个内容页上都有一个UpdatePanel吗?(因为您在母版页上声明了它)。我认为最好在内容页中声明UpdatePanel。

尝试为你的链接按钮定义一个触发器,否则HasFiles总是false

<asp:UpdatePanel ID="UpdatePanel1" runat="server" UpdateMode="Conditional">
  <Triggers>
    <asp:PostBackTrigger ControlID="LinkUploadImageMember" />
  </Triggers>
  <ContentTemplate>
    <asp:FileUpload ID="File1" runat="server" />
    <asp:LinkButton ID="LinkUploadImageMember" runat="server" Text=" upload " />
  </ContentTemplate>
</asp:UpdatePanel>

如果你不能从母版页中删除UpdatePanel,你可以在母版页上公开一个属性,允许访问UpdatePanel,像这样:

public UpdatePanel MyUpdatePanel 
{
    get { return UpdatePanel1; }
}

从contentpage中,你可以访问更新面板并以编程方式更新触发器:

protected void Page_Load(object sender, EventArgs e)
{
        ((Site)Master).MyUpdatePanel.Triggers.Add(new PostBackTrigger() {
              ControlID = LinkUploadImageMember.UniqueID });
}