我有一个aspx页面,仅使用内联C#,没有任何代码隐藏。
从Visual Studio运行可以正常工作,但是将aspx
文件添加到本地计算机的wwwroot
会显示消息
编译器错误消息:CS1513:预期
如果我重新排列代码以使方法位于代码上方,则消息将变为
CS1519:类,结构或接口成员声明中的无效令牌“ try”
我希望这与服务器配置有关,尽管我真的不知道从哪里开始。
仅当有方法时才出现此问题,从下面删除method1
会导致正确运行。
这是我能够引起错误的最小完整文件
html
<%@ Page Language="C#" %>
<%
try
{
string message = "Text";
Response.Write(method1(message));
}
catch
{
Response.Write("Err");
}
string method1(string source)
{
return source;
}
%>
答案 0 :(得分:0)
如果直接将代码嵌入到aspx页面上,则该代码仍必须包含在方法中。例如:
<%@ Page Language="C#" %>
<%
void Page_Load(Object sender, EventArgs e)
{
try
{
string message = "Text";
Response.Write(method1(message));
}
catch
{
Response.Write("Err");
}
}
string method1(string source)
{
return source;
}
%>
顺便说一句-我们通常不会直接将C#代码放入.aspx文件中。这就是code behind系统的作用。
我们通常不直接写响应。很难控制标记的最终位置。在Web窗体中,最好在页面上声明一个控件,然后在该控件上添加标记(或显示/隐藏控件)。当然,如果我们要谈论做的很好-那么首先不要使用Web窗体。这是一项枯燥的技术。
答案 1 :(得分:0)
我搞砸了Visual Studio项目,在早期版本的.NET / C#上运行会产生以下错误,看来这可能是我遇到的实际问题
错误CS8059在C#6中不提供功能'本地功能'。请使用语言版本7.0或更高版本。
我不确定为什么它认为method1
是本地函数,并且很难获得详细信息。
编辑:为了解决我的问题,我将该方法放在脚本标签中,而不是在嵌入式代码块中。然后可以从嵌入式块和脚本标签中使用这些方法。
<script runat="server">
string method1(string source)
{
return source;
}
<script>