私は C#/ASP/.NET (学習しながら学ぶ) に慣れていないので、現在の方法の問題に加えて、劣った方法でこれを行っている可能性が非常に高いです。私はできるだけ明確にしようとします(多分そうかもしれません...)。
サーバーのホスト名のリストを改行で区切って入力するためのテキスト ボックスを含むフォームがあります。送信ボタンを押すと、PostBackUrl="~/btil_Info.aspx"
. btil_info.aspx.cs 分離コードでは、次をPage_Load()
使用して前のフォームから上記のテキスト ボックス (hostnames_tb) から情報を取得します。
string hostnames = ((TextBox)Page.PreviousPage.FindControl("hostnames_tb")).Text;
Page_Load() 内で、このホスト名のリストをループし、ホストごとにいくつかのフィールド (ホストごとにいくつかのテキスト ボックスとドロップダウン メニュー) を含むフォームを作成します。これらのフィールドに入力した後、同じ分離コードで Submit_Click() を呼び出す [送信] ボタンを押すと、Submit_Click() が実行される前に Page_Load が再度呼び出されるため、ページがリロードされたように見えます。そうすることで、入力されたフォーム データが失われ、ホスト名のリストも失われます。
開発の初期段階では、これを最初のフォーム ページにすべて配置しましたが、送信ボタンは を呼び出さずPostBackURL
、単に を呼び出しSubmit_Click()
ました。これは完全に正常に機能しました。ページはリロードされず、フォームはページにとどまり、データは失われませんでした。ただし、現在と同様に、ボタンは同じように機能します。(私が見た)唯一の違いは、この面倒なページが前のフォーム呼び出しを介して到達することPostBackURL
です。
ページの更新/再読み込みを要求する必要があるポイントはないと思います。フォームデータが投稿され、前のフォームからのホスト名のリストも取得可能である限り、ページが更新/再読み込みされるかどうかは実際には気にしません。フォーム データとホスト名のリストにアクセスして、SharePoint リストを更新する別のメソッドに渡すことができるようにする必要があるだけです (ただし、その部分のコードは既に機能しています)。hostnames
2番目のコードビハインド(btil_Info.aspx.cs)で文字列をクラス変数にして、空の場合はページが読み込まれるとすぐに設定しようとしましたが、明らかにページのリロード後も持続せず、に戻されますヌル。
以下は、役立つと思われるコードのスニペットです。
最初のページ、add_BTIL.aspx:
<form id="form1" runat="server">
<div>
<asp:TextBox ID="hostnames_tb" runat="server" Rows="20" TextMode="MultiLine" Width="225px"></asp:TextBox>
<br />
<asp:Button ID="Submit" runat="server" PostBackUrl="~/btil_Info.aspx" Text="Submit" />
<br />
<asp:Literal ID="result" runat="server"></asp:Literal>
<br /><br />
<textarea id="hostnames_textarea" cols="25" rows="20" name="hostnames" title="Hostnames"></textarea></div>
</form>
最初のページ分離コード、add_BTIL.aspx.cs:
protected void Page_Load(object sender, EventArgs e)
{
}
protected void Submit_Click(object sender, EventArgs e)
{
string hostnames = hostnames_tb.Text;
/*
* Etc.
*/
}
2 ページ目、btil_Info.aspx:
<form id="hosts_form" runat="server">
<p>
<asp:Button ID="Submit" runat="server" Text="Submit" OnClick="Submit_Click" Height="26px" UseSubmitBehavior="False" /><br />
<asp:Literal ID="result" runat="server"></asp:Literal><br />
</p>
<br />
</form>
^ このフォームでは、検索のどこかでUseSubmitBehavior="False"
ページのリロードを妨げるものを読みましたが、役に立ちませんでした. とにかく、以前のバージョンでは使用しておらず、この問題はありませんでした。
2 ページ目の分離コード、btil_Info.aspx.cs:
protected void Page_Load(object sender, EventArgs e)
{
string hostnames = ((TextBox)Page.PreviousPage.FindControl("hostnames_tb")).Text;
// etc.....
}
protected void Submit_Click(object sender, EventArgs e)
{
// etc.....
}
助けてくれてありがとう!