1

ユーザーが自分のWebページから独自のHTMLを作成できるようにしています。

彼らがプレビューボタンをクリックすると、背後にある私のコードはページ上のコントロールにアクセスする必要があります(したがって、ここではWebメソッドを使用できないことを理解しています)。

HTMLを作成し、サーバーにファイルとして保存します。

私の質問は、ファイルが作成されたら、ユーザーが自分の便利な作業を確認できるように、新しいウィンドウでファイルを自動的に開きたいということです。

私はvb.netを使用していますが、c#の回答を受け取ってうれしいです。

皆さん、ありがとう!。。

-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= -=-=-=-=-=-=-=-=-=-=-=-=-=-=-Janありがとうございます!!

私はまだ少し問題があります...
私のコードは次のようになります:

If fileExists Then
        Do Until fileExists = False
            tmpFormPreviewFileName = "Test" & GetRandomNumber() & ".html"
            tmpFormPreviewFilePath = Server.MapPath("~") & "Pages\FormPreviews\" & tmpFormPreviewFileName
            fileExists = My.Computer.FileSystem.FileExists(tmpFormPreviewFileName)
        Loop
    End If

    My.Computer.FileSystem.WriteAllText(tmpFormPreviewFilePath, strHTML, False)


    'Now open the file in a new window
    btnPreview.OnClientClick = String.Format("window.open('/Pages/FormPreviews/{0}', 'myPopup', 'width=400,height=500')", tmpFormPreviewFileName)

したがって、問題は、ユーザーがプレビューボタンをクリックするまでファイル名がわからずOnClientClick、ユーザーがボタンを2回クリックするまでイベントが発生しないことです(もちろん、別のHTMLファイルが作成されます)。 )。

-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- =-ポップアップを機能させるのにまだ問題があります。現時点での私のコードは次のとおりです。

'create a JavaScript command for opening the file in popup window
    Dim strScript As String = String.Format("window.open('/Pages/FormPreviews/{0}, 'myPopup', 'width=400,height=500')", tmpFormPreviewFileName)

    'register the JavaScript to be executed when web page loads
    ScriptManager.RegisterStartupScript(Me, Me.[GetType](), "openPopup", strScript, True)
    ScriptManager.RegisterStartupScript(Me, Me.[GetType](), "ShowMsg", "javascript:alert('Test Msg');", True)

「ShowMsg」は正常に起動しますが、その上の行(ポップアップコード)が機能していないようです。何が悪いのかわかりますか?

4

2 に答える 2

1

1)まず、保存したHTMLファイルにWebからアクセスできるようにする必要があります。最も簡単な方法は、それらをWebサイトのサブフォルダーに保存することです。たとえば、「/GeneratedPages」フォルダーを作成しましょう。

このフォルダにファイルを保存するときは、このフォルダへの物理パスを作成する必要があります。Server.MapPathメソッドを使用できます。

Webアプリケーションがフォルダにデータを書き込むことを許可するには、アクセス権も設定する必要があります。

2)次に、プレビューウィンドウの開きを実装しましょう。

プレビューボタンがASXPページで次のように宣言されていると仮定します。

<asp:Button ID="btnPreview" runat="server" Text="Preview" />

次に、次のステートメントをコードビハインドに追加する必要があります。たとえば、Page_Loadメソッドに追加する必要があります。

// sample name of one generate file
string pageName = "page1.html";     
btnPreview.OnClientClick = string.Format("window.open('/GeneratedPages/{0}', 'myPopup', 'width=400,height=500')", pageName);

使用されるwindow.openメソッドの詳細については、Javascriptリファレンス(ここなど)を参照してください。

更新:(ポストバックで)ボタンをクリックした直後にファイルを作成している場合は、RegisterStartupScriptメソッドを使用できます。プレビューボタンのサーバー側クリックハンドラーは次のとおりです。

protected void btnPreview_Click(object sender, EventArgs e)
{
    string tmpFormPreviewFileName;

    // construct the filename and save the file
    // ...

    // create a JavaScript command for opening the file in popup window
    string script = string.Format("window.open('/Pages/FormPreviews/{0}, 'myPopup', 'width=400,height=500')", tmpFormPreviewFileName);

    // registger the JavaScript to be executed when web page loads
    ClientScript.RegisterStartupScript(GetType(), "openPupup", script, true);
}
于 2012-05-23T12:12:59.593 に答える
0

JavaScriptで引用符が欠落していると思います(以下を参照)

Dim strScript As String = String.Format("window.open('/Pages/FormPreviews/{0}<-- here  

これを試して:

Dim strScript As String = String.Format("window.open('/Pages/FormPreviews/{0}', 'myPopup', 'width=400,height=500')", tmpFormPreviewFileName)
于 2012-05-25T10:50:27.660 に答える