2

GreyBox js ライブラリを使用してポップアップを表示しています。より一般的なコンテキストを提供するために、VB.NET にあったソリューションを C# に書き直しました。コードは基本的に両方で同じですが、両方で使用されている構文が異なります。ただし、以下は VB.NET ソリューションでは機能しますが、C# バージョンでは機能しません。

VB

script = String.Format("GB_showCenter('My Caption', '../MyPage.aspx?number={0}&state={1}&ID={2}',300,600 );", num, MyLabel.Text, Label_id.Text)

ScriptManager.RegisterClientScriptBlock(Me.Page, Me.Page.GetType(), Guid.NewGuid().ToString(), script, True)

これは機能し、ボタンをクリックすると、ユーザーはサイズが制限された新しいページに移動します。ただし、以下は機能しません。

C#

script = String.Format("GB_showCenter('MyCaption', '../MyPage.aspx?number={0}&state={1}&ID={2}',300,600 );", num, MyLabel.Text, Label_id.Text);

ScriptManager.RegisterClientScriptBlock(this.Page, this.Page.GetType(), Guid.NewGuid().ToString(), script, true);

リンク ボタンをクリックすると、MyLabel 内のテキストが評価され、テキストが正しい場合、文字列 'script' が適切に設定され、scriptmanager に登録されます。VS2010 デバッガーを実行すると、これはすべて期待どおりに行われます。ただし、ユーザーは「MyPage.aspx」という新しいページに移動しません。URL は同じままで、ページは空白になります。

さらに興味深いのは、スクロール バーをクリックすると、現在のページが同じページの上部に表示される新しいポップアップと共に簡単に表示されることです。したがって、私の現在の理論は、javascript が c# からどのように呼び出されるかに関係しているということです。何か案は?

アップデート

vs2010 デバッガーを使用して、MyPage.aspx がヒットしたかどうかを確認することにしました。そうではありませんでした。しかし、おそらく Page_Load イベントが発生していないのではないかと思いました。だから私は追加しました:

protected override void OnInit(EventArgs e)
{
    base.OnInit(e);
    Load += Page_Load;
}

MyPage.aspx の Page_Load イベントにブレークポイントを設定すると、これがヒットしました。すべてのロジックは正しく実行されていましたが、まだ同じ問題が発生していました (空白のページなど、URL が MyPage.aspx に変更されないなど)。

4

1 に答える 1

1

特にGreyBoxとは関係ありませんが、答えを見つけました。リンクであるはずの何かを間違ってスクリプトにしてしまい、間違った属性を追加してしまいました。text/css である必要があるのに、type が text/javascript でした。これが違いを生むようでした。より多くのコンテキストを提供するために、次のものがありました。

 HtmlGenericControl Link5 = new HtmlGenericControl();
 Link5.TagName = "script";
 Link5.Attributes.Add("href", ResolveClientUrl("~/MyApp/Greybox/gb_styles.css"));
 Link5.Attributes.Add("rel", "stylesheet");
 Link5.Attributes.Add("type", "text/javascript");
 Page.Header.Controls.Add(Link5);

「TagName」は「link」である必要があり、Link5.Attributes.Add("type", "text/javascript") は「text/css」である必要があります。

于 2014-11-13T12:51:57.700 に答える