关于c#:没有代码的ASP.net页面

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
<% if (this.MyTextBox.Visible) { %>
<span>Only show when myTextBox is visible</span>
<% } %>

我以为只要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