在第一页加载时执行C#代码

时间:2011-07-20 09:43:41

标签: c# javascript

我在string SomeMethod(string message)类中有一个公共静态方法SomeClass,它获取一个字符串作为输入并返回类似

的内容
<div>message</div>

当然这是过度简化的,但这个想法就像这样。现在我想做一些像

这样的事情
<script language="javascript">var string = <% $SomeClass.SomeMethod('asdada');></script>

第一次加载页面,但我真的不知道我该怎么做。这只是让我在JavaScript中出现“预期的对象”错误。有人可以帮我解决这个问题吗?

3 个答案:

答案 0 :(得分:1)

如果您希望服务器端标记输出内容,则应使用:

 <%: yourCode %>

您的代码调用该方法,但不将输出发送到页面:

 <script>var string=<% yourMethodCall() %></script>
 /* Result = */
 <script>var string=</script>
 /* ASP.Net code is translated to this serverside code: */
 Response.Write("<script>var string=");
 yourMethodCall();
 Response.Write("</script>");

 <script>var string=<%: yourMethodCall() %></script>
 /*                   ^ */
 /* Result = */
 <script>var string=outputOfYourMethod</script>
 /* ASP.Net code is translated to this serverside code */
 Response.Write("<script>var string=");
 Response.Write(HtmlEncode(yourMethodCall()));
 Response.Write("</script>");

而且,如果这是一个服务器端类,为什么要包含$符号?

答案 1 :(得分:1)

您可以在Page_Load中动态创建/注册客户端脚本,并在Page_Load中检查页面是否为回发,如果不是,则运行注册脚本代码。

答案 2 :(得分:0)

你需要用引号包装它,并用适当的转义序列替换双引号:

var string = "<%=SomeClass.SomeMethod("asdada").Replace("\"", "\\\"")%>";