Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/xamarin/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net 正文行文=";服务器";导致编译错误_Asp.net - Fatal编程技术网

Asp.net 正文行文=";服务器";导致编译错误

Asp.net 正文行文=";服务器";导致编译错误,asp.net,Asp.net,在母版页中,我有以下标记 <body id="body" runat="server"> 然而,这给了我一个编译错误,消息是“无法解析符号someJavaScriptFunction();”。如果我运行应用程序,我会得到一个错误,告诉我 Compiler Error Message: CS1026: ) expected 应为编译器错误消息:CS1026:) 这是怎么回事onload是一个客户端事件,那么为什么ASP.NET编译器会关心这个问题呢?您需要将它添加到代码隐藏中 pro

在母版页中,我有以下标记

<body id="body" runat="server">
然而,这给了我一个编译错误,消息是“无法解析符号someJavaScriptFunction();”。如果我运行应用程序,我会得到一个错误,告诉我

Compiler Error Message: CS1026: ) expected 应为编译器错误消息:CS1026:)
这是怎么回事
onload
是一个客户端事件,那么为什么ASP.NET编译器会关心这个问题呢?

您需要将它添加到代码隐藏中

protected void Page_Load(object sender, EventArgs e)
{
     body.Attributes.Add("onload", "someJavaScriptFunction();");
}

runat=“server”
添加到标记会使其成为服务器标记,即使它不是一个明确的前缀标记(例如
)。在服务器标记上,任何
onXXXX
事件处理程序都处理服务器端事件,而不是客户端事件(明确调用“客户端”时除外,例如使用OnClientClick for buttons)。

它也是一个选项,用于设置:

<head>
  <script language="text/javascript">
    window.onload = function() { someJavaScriptFunction(); }
  </script>
</head>

window.onload=function(){someJavaScriptFunction();}

发生这种情况是因为ASP试图将body标记内的脚本解释为页面中代码的一部分。就像它是C#/VB…

好的,我可以看到它是如何工作的-但是为什么添加runat=“server”意味着我需要使用这种方法呢?我想因为它在代码后面寻找Body\u SomeJavaScriptFunction方法,因为你告诉它“在服务器上运行”?正确。。。我附上了你的答案伊恩,希望你不介意:)没问题。这一天我已经达到了200个代表点,所以我想我最好继续做一些工作:)这并不能回答“这里发生了什么?”和“ASP.NET编译器为什么关心这个”的问题。在我的场景中,这是我最后采用的方法。
<head>
  <script language="text/javascript">
    window.onload = function() { someJavaScriptFunction(); }
  </script>
</head>