asp.net中前台JavaScript库调用后台C#变量和有参函数方法

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/zhoulei13572468/article/details/51543679

最近在做项目时,遇到了js库里调用后台的变量和函数的问题,一开始不知道咋办,google了很多。

1.封装成JavaScript库,其中调用后台C#变量:

     网上有三种基本方法: 
方法一:1、通过页面上隐藏域访问 <input id="xx" type="hidden" runat="server" > 
方法二:1、如后台定义了PUBLIC STRING N;前台js中引用该变量的格式为 ' <%=n% > '或"+ <%=n% >+" 
方法三:1、或者你可以在服务器端变量赋值后在页面注册一段脚本 
" <script language= 'javascript ' >var temp=" + tmp + " </script >" 
tmp是后台变量,然后js中可以直接访问temp获得值。 

  经过测试,方法不起作用;方法三在html中注册一段脚本,测试可行的是:

<script type="text/javascript" language="javascript">        
          var v1= "<%=a%>";
          var v2= "<%=b%>";
          var v3= "<%=c%>";
          var v4= "<%=d%>";
          var v5= "<%=e%>";
    </script>

这样到js脚本中就可以直接调用v1,v2,v3,v4,v5等。

2.封装成JavaScript库,其中调用后台C#中有参函数:

之前网上很多的做法如下:

 function UploadToDB(fName) {
            rst = '<%= UploadToDB("' + fName + '") %>';
            UploadToDB = rst;
        }

fName无法传递到后台,后台获取的值仍然是“+ fName +”。

Web运行过程:
【转】分清楚客户端和服务端,var  value=<% =Ceshi(xValue) %>或者var  value= ’<% =UploadToDB(“‘+xValue+’”) %>‘都是无法将前台值传到后台的里面的代码是在服务端执行的,执行时间是客户端页面加载之前,那时js根本还未执行,所以没有js变量。

对于调用C#函数,网上更多的人推荐使用AJAX,个人觉得能用AJAX解决的,一般方法也是可以的,可能稍微复杂点罢了。对于无参函数,相对简单,网页上有好几种方法:

方法一:1、首先建立一个按钮,在后台将调用或处理的内容写入button_click中; 
2、在前台写一个js函数,内容为document.getElementById("btn1").click(); 
3、在前台或后台调用js函数,激发click事件,等于访问后台c#函数;

方法二:在html里用 <%=fucntion()% >可以调用前台脚本;

方法三:doPostBack()

方法四:隐式控件;

当有参数传递,甚至有返回值时,就显得比较麻烦了,这里化繁求简,第一种和第四种方法合并,用隐式控件传值【转】:

 HTML中JS如下:

<pre name="code" class="javascript">function upload(fid) {
            var id = document.getElementById("ctl00_ContentPlaceHolder1_Id");
            var btn1 = document.getElementById("ctl00_ContentPlaceHolder1_Btn1");
             id.value = fid;
             btn1.click();
             return id.value;
        }
     </script>



HTML中需要添加一下:

<asp:HiddenField ID="Id" runat="server" Value="1"/> 
        <div style="display:none;">      
        <asp:Button ID="Btn1" Width="0" runat="server" Text="" OnClick="UploadToDB" />       
        </div>  
后台C#UploadToDB函数:

<span style="font-size:18px;">//public int UploadToDB(string fId)
 public void UploadToDB(object sender, EventArgs e)
    {
        int rst = 0;
        string fId =this.Id.Value; //隐式控件传递值
//return rst;
this.Id.Value =rst;
}</span>


js脚本中就可以直接调用C#中的变量或者有参函数:

webObj.HttpAddPostString("id", v1);
alert(getGoodsList(returnValue));


总结:以上只是鄙人初识asp.net的见解,还请大牛多多指导,检查提出意见。( ⊙ o ⊙ )!,勇士夺得西部冠军了(10,1-3逆转)。

阅读更多
换一批

没有更多推荐了,返回首页