0

次のコードは、file.aspx と file.aspx.cs を作成します。

protected void Button1_Click(object sender, EventArgs e)
{
    string fielName = Server.MapPath("~/file.aspx");        
    TextWriter tw = new StreamWriter(fielName);        
    tw.WriteLine(@"<%@ Page Language=""C#"" AutoEventWireup=""true""  CodeFile=""file.aspx.cs"" Inherits=""file"" %>
                   <!DOCTYPE html PUBLIC ""-//W3C//DTD XHTML 1.0 Transitional//EN"" ""http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"">
                    <html xmlns=""http://www.w3.org/1999/xhtml"">
                    <head runat=""server"">
                        <title></title>
                    </head>
                    <body>
                        <form id=""form1"" runat=""server"">
                        <div>

                        </div>
                        </form>
                    </body>
                    </html>
                    ");        
    tw.Close();
    tw = new StreamWriter(fielName + ".cs");

    tw.WriteLine(@"using System;
                    using System.Collections.Generic;
                    using System.Linq;
                    using System.Web;
                    using System.Web.UI;
                    using System.Web.UI.WebControls;
                    using System.IO;

                    public partial class file : System.Web.UI.Page
                    {
                        protected void Page_Load(object sender, EventArgs e)
                        {
                           Response.Write(""new File "");

                        }
                    }
                    ");       
    tw.Close();
}

テキストボックスに書いたページ名を作りたいです。

上記コードのhtmlソースにテキストボックスを入れてみたのですが、エラーになってしまいます。

CodeFile="""+TextBox1.Text+""" Inherits="""+TextBox1.Text+"""
4

2 に答える 2

1

ASP.NET がページについて "考える" 方法で作業することは、はるかに先を行っています。私はかつて、非常に大規模で動的なアンケートに取り組んだことがあります。すべてのコントロールは、検証やその他すべてとともに動的に生成されました。その核となるのは、次のような方法です。

  • ページにパネルを配置する
  • コントロールをパネルに追加する

コードは非常に大まかに次のようになります。

        var btn = new Button();
        btn.ID = "theId";
        btn.Text = "hi";
        pnlDynamic.Controls.Add(btn);

動的コントロールを扱っているため、ページのライフサイクルを理解していることを確認することもできます...: http://msdn.microsoft.com/en-us/library/ms178472(v=vs. 100).aspx

于 2013-06-25T16:45:32.337 に答える
0

Web プロジェクトがWeb アプリケーションではなく Web サイトとして宣言されていることを確認してください。

Web サイトは、Web アプリケーションとは異なり、要求に応じて各ページを動的にコンパイルすることをいとわないため、このようなことは原理的に実行可能です。本当にやりたいなら。

于 2013-06-25T14:55:12.830 に答える