ASPX页面报错:期望以类似PHP的方式编写ASPX(C#)代码
解决ASPX内联代码中方法定义的报错问题
首先得说,你遇到的问题是ASP.NET内联代码块的语法规则和PHP不一样——在PHP里你可以随便在脚本流里定义函数,但ASPX的<% %>代码块是嵌入到页面类的Render方法里的,你不能在一个方法内部再定义另一个方法,这就是报错的根源。
要实现类似PHP的内联写法,我们需要把方法定义放到类级别的声明块(<%! %>)里,这个块里的代码会被编译成页面类的成员,就像后台代码里的方法一样。
下面是修正后的代码:
<%@ Page Language="C#"%> <html> <body> <%! // 把方法定义放到类级声明块里 int add1(int i) { return 1 + i; } %> <% int x = 555; try { Response.Write(add1(5)); throw new Exception("error here1<br>\n"); } catch(Exception ex) { Response.Write("error detected"); } %> <h3>Lower</h3> </body> </html>
关键修改点:
- 把
add1方法从<% %>移到<%! %>中:这个声明块专门用来定义页面类的成员(方法、属性、字段),和PHP里全局定义函数的逻辑类似。 - 剩下的执行逻辑(变量定义、try/catch、输出)留在
<% %>里,这部分代码会在页面渲染时执行,和PHP的脚本执行逻辑一致。
这样修改后,代码就能正常编译运行了:先输出6(add1(5)的结果),然后抛出异常被捕获,输出error detected,最后显示<h3>Lower</h3>。
内容的提问来源于stack exchange,提问作者user366866
相关产品推荐
相关产品推荐

