没有代码的ASP.net页面

时间:2009-02-19 01:29:09

标签: c# .net asp.net sharepoint code-behind

我有一个带有C#代码的ASP.Net页面。

但是,我被要求不使用代码 - 因此在SharePoint中部署更容易。

有没有办法在ASP.Net页面中包含C#代码,而不使用单独的代码隐藏文件?

6 个答案:

答案 0 :(得分:91)

默认情况下,Sharepoint不允许在ASPX文件中执行服务器端代码。 See this了解如何解决此问题。

但是,我要提出,在Sharepoint中部署代码并不一定很困难(我们会广泛地进行部署) - 只需将代码隐藏类编译成程序集并使用solution进行部署。

如果仍然没有,你可以包含你通常放在代码隐藏中的所有代码,如下所示:

<script language="c#" runat="server">
public void Page_Load(object sender, EventArgs e)
{
  //hello, world!
}
</script>

答案 1 :(得分:20)

您实际上可以拥有aspx页面中的所有代码。正如here所述。

来自here的示例:

<%@ Language=C# %>
<HTML>
   <script runat="server" language="C#">
   void MyButton_OnClick(Object sender, EventArgs e)
   {
      MyLabel.Text = MyTextbox.Text.ToString();
   }
   </script>
   <body>
      <form id="MyForm" runat="server">
         <asp:textbox id="MyTextbox" text="Hello World" runat="server"></asp:textbox>
         <asp:button id="MyButton" text="Echo Input" OnClick="MyButton_OnClick" runat="server"></asp:button>
         <asp:label id="MyLabel" runat="server"></asp:label>
      </form>
   </body>
</HTML>

答案 2 :(得分:7)

你的aspx页面上的是

是包含runat = server

的脚本标记
<script language="c#" runat="server">

public void Page_Load(object sender, EventArgs e)
{
  // some load code
}
</script>

您还可以使用经典的ASP语法

<% if (this.MyTextBox.Visible) { %>
<span>Only show when myTextBox is visible</span>
<% } %>

答案 3 :(得分:7)

SharePoint中有两种截然不同的页面:应用程序页面和网站页面。

如果您要将您的页面用作应用程序页面,则可以安全地在页面中使用内联代码或代码,因为应用程序页面位于文件系统上。

如果它将成为“站点”页面,只要您在初始部署中拥有它,就可以安全地编写内联代码。但是,如果您的网站页面将在未来某个时间进行自定义,则内联代码将不再有效,因为自定义网站页面存在于数据库中并以asp.net的“无编译”模式执行。

底线是 - 您可以使用内联代码编写aspx页面。唯一的问题是自定义网站页面...它将不再关心您的内联代码。

答案 4 :(得分:3)

我认为只要DLL在你的bin中就可以部署你的.aspx页面,而不需要.aspx.cs。这里的部分问题是visual studio .net如何与.aspx页面配合使用。

在这里查看: Working with Single-File Web Forms Pages in Visual Studio .NET

我确信VS2008与asp.net MVC RC你的视图没有代码隐藏文件。

答案 5 :(得分:2)

文件:logdate.aspx

<%@ 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