没有代码的 ASP.net 页面
Posted
技术标签:
【中文标题】没有代码的 ASP.net 页面【英文标题】:ASP.net page without a code behind 【发布时间】:2010-10-08 11:51:31 【问题描述】:我有一个带有 C# 代码的 ASP.Net 页面。
但是,我被要求不要使用背后的代码 - 这样会更容易在 SharePoint 中进行部署。
有没有办法在 ASP.Net 页面中包含 C# 代码,而不使用单独的代码隐藏文件?
【问题讨论】:
【参考方案1】:您实际上可以在 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>
【讨论】:
【参考方案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
【讨论】:
【参考方案3】:SharePoint 中有两种截然不同的页面类型:应用程序页面和网站页面。
如果您要将页面用作应用程序页面,则可以安全地在页面中使用内联代码或代码隐藏,因为应用程序页面存在于文件系统中。
如果它将是一个站点页面,您可以安全地编写内联代码,只要您在初始部署中拥有这样的代码。但是,如果您的网站页面将在将来的某个时间进行定制,则内联代码将不再起作用,因为定制的网站页面存在于数据库中,并且在 asp.net 的“无编译”模式下执行。
底线是 - 您可以使用内联代码编写 aspx 页面。唯一的问题是自定义的站点页面......它不再关心您的内联代码。
【讨论】:
【参考方案4】:我认为只要 DLL 在您的 bin 中,您就可以只部署 .aspx 页面而无需 .aspx.cs。这里的部分问题是 Visual Studio .net 如何处理 .aspx 页面。
在这里查看: Working with Single-File Web Forms Pages in Visual Studio .NET
我确信带有 asp.net MVC RC 的 VS2008 没有用于视图的代码隐藏文件。
【讨论】:
【参考方案5】:默认情况下,Sharepoint 不允许在 ASPX 文件中执行服务器端代码。 See this 了解如何解决。
但是,我要提出的是,在 Sharepoint 中部署代码隐藏并不一定很困难(我们广泛这样做) - 只需将您的代码隐藏类编译到程序集中并使用 solution 部署它。
如果仍然没有,您可以将通常放置在代码隐藏中的所有代码包含在内,如下所示:
<script language="c#" runat="server">
public void Page_Load(object sender, EventArgs e)
//hello, world!
</script>
【讨论】:
谢谢 :) 这是我们第一次真正需要在这里使用 Sharepoint,我不确定这是否真的正确。 我想再次强调 Rex M 的观点,即您应该认真考虑在程序集后面使用代码并通过解决方案文件部署它们,而不是为了更容易部署而放松 SharePoints 的安全性。这是最佳实践,解决方案文件实际上相当简单。 @RexM 有没有可能不使用c#开发ASP.NET项目? @FaizanRabbani 您可以使用 VB.NET,但我无法理解您为什么要这样做。从技术上讲,您可以使用任何编译为 MSIL 的语言,但如果您使用 c# 或 VB 以外的其他语言,那么您会有点“跳出框框”。 嗯,我有一个概念(我不知道这听起来有多愚蠢),我们只能通过使用客户端语言来创建项目。【参考方案6】:是的,在您的 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>
<% %>
【讨论】:
以上是关于没有代码的 ASP.net 页面的主要内容,如果未能解决你的问题,请参考以下文章
ASP.NET/VB.NET/SQL Server 2012 - 页面不断加载
ASP.NET 页面加载完成后运行 javascript 函数