ASP.net页面没有代码后台

67

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

然而,我被要求不使用代码后台 - 这样在SharePoint中部署会更容易。

是否有一种方法可以将C#代码包含在ASP.Net页面中,而不使用单独的代码后台文件?

6个回答

98

默认情况下,SharePoint不允许在ASPX文件中执行服务器端代码。可以参考此链接了解如何解决该问题。

但是,我认为在SharePoint中拥有代码后台并不一定难以部署(我们广泛使用它)- 只需将代码后台类编译成程序集,并使用解决方案进行部署即可。

如果仍然不行,您可以将通常放置在代码后台的所有代码包含在内,就像这样:

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

1
谢谢 :) 这是我们第一次真正需要在这里使用Sharepoint,我不确定那是否正确。 - Sophia
9
我希望重新强调Rex M的观点,即您应认真考虑使用代码后置程序集,并通过解决方案文件部署它们,而不是放宽SharePoint的安全性以便更轻松地部署。这是最佳实践,并且使用解决方案文件实际上相当简单。 - webwires
@RexM 有没有可能开发ASP.NET项目而不使用C#? - FaizanHussainRabbani
@FaizanRabbani,你可以使用VB.NET,但我无法理解为什么你想要这样做。从技术上讲,你可以使用任何编译成MSIL的语言,但如果你使用除C#或VB之外的其他语言,那么你会有点“超出常规”。 - Rex M
嗯,我有一个概念(不知道听起来有多愚蠢),即我们可以仅使用客户端语言创建项目。 - FaizanHussainRabbani
@FaizanRabbani 这不是详细讨论的正确论坛。也许你应该开一个新问题来处理你具体的挑战。 - Rex M

30
你实际上可以将所有代码放在aspx页面中。如此处所述:这里
示例来自这里:
<%@ 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>

11

在你的 aspx 页面中,包含一个带有 runat=server 属性的 script 标签。

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

8
在SharePoint中,有两种非常不同类型的页面:应用程序页面和站点页面。
如果您要将页面用作应用程序页面,则可以在页面中安全使用内联代码或代码后置,因为应用程序页面位于文件系统上。
如果它将成为站点页面,则只要在初始部署中像那样编写内联代码,就可以安全地编写内联代码。但是,如果您的站点页面在将来的某个时候进行了自定义,则内联代码将不再起作用,因为自定义站点页面位于数据库中并在asp.net的“无编译”模式下执行。
底线是-您可以编写带有内联代码的aspx页面。唯一的问题在于自定义站点页面...不再关心您的内联代码。

6

File: 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

4
我认为只要 DLL 文件在 bin 目录下,你就可以仅部署 .aspx 页面而不需要 .aspx.cs 文件。问题的一部分在于 Visual Studio .net 如何处理 .aspx 页面。
请参见此处: 在 Visual Studio .NET 中使用单文件 Web 表单页面 我确定,在使用 asp.net MVC RC 的 VS2008 中,你的视图不需要代码后备文件。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接