最近这段时间在维护一个旧的ASP.NET项目,发现项目中有使用<script runat="server"></script>标记来插入后台的服务端代码,于是写下本文做个笔记。
其实在ASP.NET项目中使用这种标记应该是已经很少见了,随着ASP.NET MVC开始流行起来,再加上ASP.NET Web Form越来越完善(WebForm基本都是用Codebehind代码后置),只有在一些旧项目中偶尔会看到使用这种标记来嵌入后端代码。
大概的代码如下:
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="WebForm4.aspx.cs" Inherits="WebApplication1.WebForm4" %>
<html>
<head></head>
<body>
<script runat="server">
public string strWelcome;
public string GetWelcomeString()
{
return "欢迎访问该页面";
}
override protected void OnInit(EventArgs e)
{
strWelcome = GetWelcomeString();
Response.Write(strWelcome);
}
</script>
</body>
</html>
显示结果如图:
我们可以看到在<script runat="server">标记中写的代码和在后端.aspx.cs代码文件(代码隐藏类文件)中的写法完全一样,不仅可以声明方法变量,还可以重写OnInit初始化函数。
还有一点,在该标记中声明的方法变量的优先级,比在.aspx.cs代码文件中的方法变量优先级高,即如果在标记中和代码文件中同时声明了一样的方法和变量,那么只有标记中的方法和变量有效。
另外要注意的是,在<script runat="server">标记中,使用#region #endregion这个预处理器指令无法折叠,一些代码区块也无法折叠,代码一多阅读性就差。
所以建议最好还是不用要这个标签,最好写在后端的.aspx.cs文件中,这也符合ASP.NET的Code Behind设计(代码后置技术),将服务端代码和前段代码分离,加强代码可读性和方便代码后期维护。
作者:十有三
出处:https://shiyousan.com/post/635520492955133672
版权声明:本文采用知识共享许可协议:署名-相同方式共享 4.0 国际(CC BY-SA 4.0)。欢迎转载本文,转载请声明出处或保留此段声明。