1

我让我的用户从我的网页编写自己的 HTML。

当他们单击预览按钮时,我背后的代码需要访问页面上的控件(所以我知道我不能在这里使用 Web 方法)。

它构建 HTML 并将其作为文件保存在服务器上。

我的问题是:创建文件后,我想在新窗口中自动打开文件,让用户看到他们得心应手的工作。

我正在使用 vb.net,但很高兴收到 c# 答案。

谢谢各位!. .

-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= -=-=-=--=-=-=-=-=-=--=-=-=--=-=- 非常感谢扬!!

我仍然有一个小问题......
我的代码是这样的:

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用户第二次单击按钮之前事件不会触发(这当然会创建另一个 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 文件可以通过网络访问。最简单的方法是将它们保存到您网站的某个子文件夹中——例如,让我们创建一个“/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 回答