我在string SomeMethod(string message)
类中有一个公共静态方法SomeClass
,它获取一个字符串作为输入并返回类似
<div>message</div>
当然这是过度简化的,但这个想法就像这样。现在我想做一些像
这样的事情<script language="javascript">var string = <% $SomeClass.SomeMethod('asdada');></script>
第一次加载页面,但我真的不知道我该怎么做。这只是让我在JavaScript中出现“预期的对象”错误。有人可以帮我解决这个问题吗?
答案 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("\"", "\\\"")%>";