我有一个带有C#代码后台的ASP.Net页面。
然而,我被要求不要使用代码后端-以便更容易在SharePoint中部署。
有没有一种方法可以将C#代码包含在ASP.Net页面中,而不使用单独的代码后备文件?
我有一个带有C#代码后台的ASP.Net页面。
然而,我被要求不要使用代码后端-以便更容易在SharePoint中部署。
有没有一种方法可以将C#代码包含在ASP.Net页面中,而不使用单独的代码后备文件?
默认情况下,Sharepoint 不允许在 ASPX 文件中执行服务器端代码。请参阅此链接了解如何解决此问题。
然而,我想提出的是,在Sharepoint中拥有一个代码后台并不一定难以部署(我们广泛使用它)- 只需将您的代码后台类编译成一个程序集并使用解决方案进行部署。
如果仍然没有,您可以像这样包含通常放在代码后端的所有代码:
<script language="c#" runat="server">
public void Page_Load(object sender, EventArgs e)
{
//hello, world!
}
</script>
你实际上可以将所有代码放置在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>
在您的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>
<% } %>
在SharePoint中存在两种非常不同的页面类型:应用程序页面和站点页面。
如果您打算将您的页面用作应用程序页面,您可以在您的页面中使用内联代码或代码后台,因为应用程序页面存放在文件系统上,所以是安全的。
如果它将作为网站页面,只要在初始部署时将其写成内联代码,您就可以安全地编写。但是,如果您的网站页面将来某个时候要进行自定义,则内联代码将不再起作用,因为自定义网站页面存储在数据库中,并在ASP.NET的“无编译”模式下执行。
底线是-你可以写有内联代码的aspx页面。唯一的问题是自定义站点页面……将不再关心您的内联代码。
文件: 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
我认为你可以只部署.aspx页面而不需要.aspx.cs,只要DLL文件在你的bin目录中。这里的问题之一是Visual Studio .NET如何使用.aspx页面。
Check it out here: Working with Single-File Web Forms Pages in Visual Studio .NET
我确定,使用asp.net MVC RC的VS2008不需要视图的代码后备文件。