我有一个 ASP.Net 页面,后面有 C# 代码。
但是,我被要求不要使用隐藏代码 - 这样在 SharePoint 中部署会更容易。
有没有办法在 ASP.Net 页面中包含 C# 代码,而不使用单独的代码隐藏文件?
你实际上可以在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
只需将其放在 Web 根目录下,它就会自动就地编译。
我认为只要 DLL 在您的 bin 中,您就可以只部署 .aspx 页面而不需要 .aspx.cs。这里的部分问题是 Visual Studio .net 如何与 .aspx 页面一起工作。
在这里查看: 在 Visual Studio .NET 中使用单文件 Web 表单页面
我确信使用 ASP.NET MVC RC 的 VS2008 没有用于视图的代码隐藏文件。