2つのリストを含む単純なasp.netWebページがありRadioButton
ます。フォームが送信されると、より複雑なコードが実行されます。これには、実行に時間がかかります(5〜10秒)。
ContentPlaceHolder
そのコードを実行する前に、可視性を2の間で変更したいだけです。切り替えは機能しますが、複雑なコードが実行された後でのみ機能します。
その結果、ページがフリーズし、しばらくすると変更されます。
私のaspxコード:
<asp:Content ID="BodyContent" runat="server" ContentPlaceHolderID="MainContent">
<asp:PlaceHolder ID="requestpage" runat="server" Visible="true">
<p>
</p>
<h1>
Navigatie update</h1>
<p>
</p>
<div style="text-align: left; width: 300px">
<p>
Kies een site</p>
</div>
<p>
<asp:RadioButtonList ID="pubtargetid" runat="server">
</asp:RadioButtonList>
</p>
<br />
<br />
<div style="text-align: left; width: 300px">
<p>
Kies een taal</p>
</div>
<p>
<asp:RadioButtonList ID="chosenLanguage" runat="server">
</asp:RadioButtonList>
</p>
<p style="color: red">
<asp:Label ID="errorMessage" runat="server"> </asp:Label></p>
<p>
<asp:Button Text="Start update" OnClick="Submit" runat="server" />
</p>
</asp:PlaceHolder>
<asp:PlaceHolder ID="responsepage" runat="server" Visible="False">
<p>
</p>
<h1>
Navigatie update</h1>
<p>
Navigatie wordt geüpdate</p>
<p>
</asp:PlaceHolder>
背後にある私のコード:
using System;
using System.Web.UI.WebControls;
using System.Threading;
using Tridion.ContentManager.CommunicationManagement;
using Tridion.ContentManager;
namespace CustomPages
{
public partial class Navigation : System.Web.UI.Page
{
private Session session;
protected void Page_Load(object sender, EventArgs e)
{
session = new Session(Request.ServerVariables["LOGON_USER"]);
Response.BufferOutput = true;
Response.Flush();
if (!Page.IsPostBack)
{
var targets = session.SystemManager.GetPublicationTargets();
pubtargetid.Items.Clear();
foreach (PublicationTarget t in targets)
{
var radio = new ListItem(t.Title, t.Id);
pubtargetid.Items.Add(radio);
}
chosenLanguage.Items.Clear();
var nl = new ListItem("NL", "NL");
var fr = new ListItem("FR", "FR");
chosenLanguage.Items.Add(nl);
chosenLanguage.Items.Add(fr);
}
}
public void Submit(object sender, EventArgs e) // --> when submitting the form
{
if (pubtargetid.SelectedIndex != -1 && chosenLanguage.SelectedIndex != -1)
{
requestpage.Visible = false;
responsepage.Visible = true;
Response.Flush();
String pageId ="";
String target = pubtargetid.SelectedItem.Value;
String lang = chosenLanguage.SelectedItem.Value;
//some code//
var nav = new Automations.Navigation(session,page);
nav.CheckPage(pageId, target); // --> complex piece of code
}
else
{
errorMessage.Text = "";
if (pubtargetid.SelectedIndex == -1)
{
errorMessage.Text += "Choose a publication target. \n";
}
if (chosenLanguage.SelectedIndex == -1)
{
errorMessage.Text += "Choose a language.";
}
}
}
}
}
つまり、複雑なコードを実行する前に、可視性を変更させたいのです。
私はさまざまなオプションを試しました。Responeをフラッシュしようとするのと同じですが、私は失敗し、Response.BufferOutput = false
また別の機会に失敗しまし= true
たが、それでも失敗しました。
この問題についての助けをいただければ幸いです。