Scriptmanager на одной странице, а панель на другой - PullRequest
1 голос
/ 31 октября 2011

У меня есть страница .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. Дело в том, что 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>

И 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.NET, так как я новичок в этом деле ^^

Спасибо

1 Ответ

2 голосов
/ 31 октября 2011

Вы также можете использовать класс ScriptManagerProxy , если вам нужен ScriptManager на вашей контентной странице, но я не уверен, нужно ли вам это вообще.Вам действительно нужен UpdatePanel на каждой странице контента?(потому что вы объявили это на главной странице).Я думаю, что может быть лучше объявить UpdatePanel на странице содержимого.

Попробуйте определить триггер для вашей кнопки ссылки, в противном случае HasFiles всегда ложно

<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на главной странице вы можете выставить свойство на главной странице, которое дает доступ к панели обновления, например:

public UpdatePanel MyUpdatePanel 
{
    get { return UpdatePanel1; }
}

На странице содержимого вы можете получить доступ к панели обновления и программно обновить триггеры:

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