[已解决问题] JS调用后台带参数的方法
提问时间: 2008-04-03 11:32
悬赏分:50 浏览:781 次

 1.后台方法:
   protected string CsharpVoid(string strCC)
  {
   return strCC;
   }
   2.javascript 调用
  <script language="javascript">
   var s = "<%=CsharpVoid("www.esoutong.com")%>";
   document.write(s);
   </script>

怎么把"www.esoutong.com"  换成变量,用了好多办法都不行;AJAX不用,因为这个页面有VML。


提问者:金鱼 - 菜鸟二级
最佳答案
我给你的方法如下:
1、后台方法:
protected string CsharpVoid(string strCC)
{
    strCC = "http://" + strCC;
    return strCC;
}
2、前台页面JavaScript方法:
<script language="javascript" type="text/javascript">
var v = "www.baidu.com";
var s = '<%=CsharpVoid("'+v+'")%>'; 
document.write(s);
</script>
你试试,我在Visual Studio.Net2005中测试成功!结果在页面上写了【http://www.baidu.com】的字符串!
仔细看看这句话:var s = '<%=CsharpVoid("'+v+'")%>'; 里面的双引号和单引号!
你出现此问题直接原因还是在写码的不规范上:你的var s = "<%=CsharpVoid("www.esoutong.com")%>"; 这句话里外都用双引没有问题,可以被解释成功,但为了代码的整洁易读还是需要养成良好的写码习惯,使代码更易被读懂,避免因不规范的写码习惯而产生的不必要的错误!在JavaScript教程等书中写:在JavaScript中可以使用单引,也可以使用双引,但当在引号中还需要使用引号时可使用单引和双引的交替使用,使代码清晰易读并避免不必要的错误发生。当CsharpVoid("")中必须使用双引号时,你在定义var s时就必须使用单引号,如果还使用双引号想把原来的www.baidu.com替换为变量就会报错了(将var s = '<%=CsharpVoid("'+v+'")%>'; 这句的单引改双引写成var s = "<%=CsharpVoid(""+v+"")%>"; 是无法被解释成功的),这个错误就是不规范写码造成的。所以规范写码可以避免此类错误的发生!
附:这里要给你说明的是网友高_超的这句:var s = "<%=CsharpVoid('www.baidu.com')%>";是错误的,在Visual Studio.Net2005中是不会被编译成功的。在【<%=】之后的【CsharpVoid】是后台的方法,必须使用双引号而不能使用单引号定义传入的字符串。
2008/4/4 2:04:31 回答者:刚刚


提问者对于答案的评价:谢谢大家! 尤其谢谢刚刚,谢谢刚刚的指点,下次偶一定会注意的。
其它回答(3)
为什么要加引号呢?
我想就算是要加引号也是这个行式吧。
'<%=CsharpVoid("www.esoutong.com");%>'
或者 用一个很笨的方法。注册一个隐藏域 然后去取值。
菜鸟没办法。只会这么多
现写了一个,不知道你要的是不是这个
<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
    <title>无标题页</title>
    
    <script type="text/javascript" runat="server">
private string getString(string strA)
{
return strA;
}
    </script>
    <script type="text/javascript">
var s='<%=getString("www.baidu.com") %>'
document.write(s);
    </script>
</head>
<body>
    <form id="form1" runat="server">
    <div>
    
    </div>
    </form>
</body>
</html>

你要的不是这个?
3个月前   回答者:天生俪姿 - 菜鸟二级
为什么不用下面的.直接就可以做变量:
<script type="text/javascript">
var strCC='www.baidu.com'
document.write(s);
</script>
不知道你具体做什么用的:
<script language="javascript">
var s = '<%=CsharpVoid("www.esoutong.com")%>'; 
document.write(s);
</script>
这里要注意的地方是,在javascript里可以用单引号和双引号来表示字符串.但是如果你在字符串里嵌套字符串时.有相对的原则.如果外面使用了单引号.那么里面的就应该用双引号.如: 
var str='<%=CsharpVoid("www.esoutong.com")%>'; 
同时你也可以写成
var str="<%=CsharpVoid('www.esoutong.com')%>"; 
如果你需要至少三层的嵌套.那么可以交叉使用,比如:单引号-双引号-单引号或者双引号-单引号-双引号.....

3个月前   回答者:高_超 - 菜鸟二级
你在要调用的CsharpVoid方法前面把命名空间写全就行了,比如:Demo.Web.CsharpVoid("www.esoutong.com")
3个月前   回答者:yuuhhe - 菜鸟二级
评论
3个月前   金鱼 :
呵呵,不是这个。
getString()这个类是后台的,我需要传的参数是个变量。至于那个地方用双引号也是没有问题的。
3个月前   金鱼 :
谢谢大家!
尤其谢谢刚刚,谢谢刚刚的指点,下次偶一定会注意的。
3个月前   刚刚 :
不客气,呵呵……
   您需要登录以后才能回答!
我的问题    我要提问


快到期问题

> 问题排行榜

有不合适内容,建议去除