まず、フレームを使用すべきではないことはわかっていますが、選択の余地はありません。これは古いシステムで、頭痛の種でしかありませんでしたが、ネットワーク エンジニアはこのシステムを気に入っており、自分たちの情報やページをここに保存するよう要求しています。
私は現在、.NET 4.0 フレームワークである c# を使用しています。また、この質問には関係ないとは思いますが、SQL Server 2008R2 も使用しています。
現在の問題:プライマリ ハードウェアとスタンバイ ハードウェアのどちらが選択されているかを判断する方法が必要です。これにより、ラジオ ボタンとページ読み込みに関する初期情報を、読み込まれるページに基づいてプライマリ ハードウェアまたはセカンダリ ハードウェアのいずれかに適切に設定できます。 . 私のページが使用されている Web サイトはサード パーティであり、変更する権限がないため、そのページに URL 変数を追加したり、設定を変更したりすることはできません。
URL には変数がありますが、それらは Web サイトの別の場所で静的に生成され、自分のページが存在するフレーム内でのみ表示されます。私は実際にフレームを使用したことがないので、少し途方に暮れています。さらに悪いことに、これがセットアップされてテストされているため、コードにブレークポイントを設定してどこで失敗しているかを確認する方法が実際にはわかりません.
これを回避する別の方法は考えられませんでしたが、このフレームのようなナンセンスを含まない解決策があれば幸いです.
これまでのところ、ガイダンスとしてこれらを調べてきましたが、あまり成功していません。 URL とフレームの間で変数を共有する、フレームに関する msdn の .NET 4.0 ページ、フレームからURL 変数を取得する方法に関する投稿、コードビハインドから IFrame にページを動的にロードする。
とりあえず、ページが壊れないようにとの依頼がありましたので、ただ行うのではなく確認中です。現在、そのサイトには 2 つの場所があります。1 つはフレームと URL 変数 (管理者が削除したい) のない場所で、もう 1 つは URL 変数とフレームのある新しいホームです。今のところ、最初のものは壊れません。そのため、少し奇妙なチェックと ?? が表示されます。オペレーター。
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
System.Web.UI.HtmlControls.HtmlGenericControl orionIFrame =
(System.Web.UI.HtmlControls.HtmlGenericControl)this.FindControl("pcmaframe");
if (orionIFrame != null)
{
string frameURL = orionIFrame.Attributes["src"].ToString() ?? "";
Uri frameURI = new Uri(frameURL);
NameValueCollection queryVars = HttpUtility.ParseQueryString(frameURI.Query);
//If this is in Orion, we want to change the canceller to standby if it's 97, not 96
if (queryVars["NetObject"] == "N:97" || queryVars["NetObject"] == "N%3a97")
{
SelectCanceller.SelectedValue = "Standby";
primaryStandby = false;
}
}
//Do some other stuff to generate page data
現在、フレームを生成するコードは次のようになっています ([url] は実際の URL を置き換え、[mypage] は使用した実際のファイル名を置き換えます)。
NodeID - ${NodeID}<br>
Node Name - ${NodeName}
<iframe id="pcmaframe" src="[url]/[mypage].aspx?NetObject=N:" + ${NodeID} width = 1000 height = 1500>
</iframe>
現時点では、動作に問題はなく、切り替えに失敗するだけです。URL 変数に関係なく、どちらのページにもプライマリが表示されます。プライマリーは N:96、セカンダリーは N:97 です。私がチェックする理由は、失敗した場合に何かを表示したいので、デフォルトでプライマリ ハードウェアに設定するためです。
それでは、すばらしいスタック オーバーフローの皆さん... 私の 3 つの質問のうち、どれか答えていただけますか?
ブレークポイントを挿入する方法がない場合、ページに出力を追加せずに別の Web サイトのフレームをトラブルシューティングするにはどうすればよいですか?
URL 変数を使用してこれらのフレームをいじる代わりに、何ができますか?
フレームが URL 変数を /認識しない / 認識しているコードのどのロジックが欠けているか、または台無しになっていますか?
アップデート
さて、これまでのところ、フレームが null であると判断しました。これが this.FindControl が適切にキャストされていないためなのか、それとも Web サイトがフレームを使用する方法やその他のさまざまな理由によるものなのかはわかりません...