2009-02-19 26 views
56

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

但是,我被要求不使用后面的代码 - 以便在SharePoint中部署更容易。

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

回答

83

通过默认Sharepoint不允许在ASPX文件中执行服务器端代码。 See this如何解决这个问题。但我会提出,在Sharepoint中部署代码并不一定很难(我们广泛实现) - 只需将您的代码隐藏类编译为程序集,然后使用solution进行部署即可。

如果还没有,你可以包括所有你通常放在一个隐藏代码,像这样的代码:

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

谢谢:)这是我们第一次真正到了这里使用SharePoint,我不知道,如果这是实际上是正确的。 – Sophia 2009-02-19 01:40:39

19

你实际上可以在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> 
6

是你的aspx页面上包括与RUNAT =服务器的脚本标签

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

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

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

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

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

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 
相关问题