ASP.net page without a code behind
我有一个后面有C代码的ASP.NET页面。
但是,我被要求不要使用代码隐藏,这样可以更容易地在SharePoint中部署代码。
是否有一种方法可以在ASP.NET页中包含C代码,而不使用单独的代码隐藏文件?
默认情况下,SharePoint不允许在ASPX文件中执行服务器端代码。有关如何解决此问题的信息,请参阅此部分。
但是,我会提出,在SharePoint中部署代码隐藏并不一定很困难(我们做得很广泛),只需将代码隐藏类编译到一个程序集中,然后使用解决方案部署它。
如果仍然没有,您可以将通常放置在代码隐藏中的所有代码包括在内,如下所示:
1 2 3 4 5 | <script language="c#" runat="server"> public void Page_Load(object sender, EventArgs e) { //hello, world! } |
实际上,您可以在ASPX页面中拥有所有代码。如本文所述。
此处的示例:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | <%@ Language=C# %> <HTML> <script runat="server" language="C#"> void MyButton_OnClick(Object sender, EventArgs e) { MyLabel.Text = MyTextbox.Text.ToString(); } <body> <form id="MyForm" runat="server"> </asp:textbox> </asp:button> </asp:label> </form> </body> </HTML> |
在SharePoint中有两种非常不同的页面类型:应用程序页面和网站页面。
如果要将页面用作应用程序页面,则可以安全地在页面中使用内嵌代码或隐藏代码,因为应用程序页面位于文件系统中。
如果它是一个站点页面,那么只要在初始部署中有这样的代码,就可以安全地编写内联代码。但是,如果将来某个时候要自定义站点页面,则内联代码将不再工作,因为自定义的站点页面位于数据库中,并且在ASP.NET的"不编译"模式下执行。
底线是-您可以用内联代码编写ASPX页面。唯一的问题是自定义网站页面…它将不再关心您的内联代码。
是,在您的ASPX页面上包含runat=server的脚本标记
1 2 3 4 5 6 | <script language="c#" runat="server"> public void Page_Load(object sender, EventArgs e) { // some load code } |
也可以使用经典的ASP语法
1 2 3 |
我以为只要dll在您的bin中,您就可以只部署.aspx页而不部署.aspx.cs。这里的部分问题是Visual Studio.NET如何处理.aspx页。
在这里查看:在Visual Studio.NET中使用单文件Web窗体页
我确信,使用ASP.NET MVC RC的VS2008没有视图的代码隐藏文件。
文件:logdate.aspx
1 2 3 4 5 6 7 8 9 10 11 12 | <%@ Page Language="c#" %> <%@ Import namespace="System.IO"%> <% StreamWriter tsw = File.AppendText(@Server.MapPath("./test.txt")); tsw.WriteLine("--------------------------------"); tsw.WriteLine(DateTime.Now.ToString()); tsw.Close(); %> Done |