2009-02-19 27 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 
相關問題