【问题标题】:Trigger C# method from JavaScript and send parameters从 JavaScript 触发 C# 方法并发送参数
【发布时间】:2014-05-16 11:34:00
【问题描述】:

我正在尝试从 JavaScript 调用 C# 方法并随调用一起发送参数。我已经调用了 Web 方法,但由于无法在静态 Web 方法中访问服务器端控件,因此在这种情况下我无法真正使用它。

我无法进行完整的回发,因为我需要获取 Google 地图坐标,在我的情况下,我以这种方式访问​​它们,并且我无法以不同的方式访问它们:

        var map = new google.maps.Map(document.getElementById("dvMap"), mapOptions);
        var bounds = new google.maps.LatLngBounds();
        bounds = map.getBounds();    
        var latLng = map.getCenter();                
        var latSW = bounds.getSouthWest().lat();
        var lngSW = bounds.getSouthWest().lng();
        var centerLat = latLng.lat();
        var centerLng = latLng.lng();

所以现在我想将其中一些参数传递给实际的 c# 函数,即使我需要执行完整的服务器端回发也可以,只要我的后端代码中有控件即可。

一旦在服务器端,我需要用数据集填充 asp.net 转发器控件,这是我需要触发后端方法的最大问题。

public void GetData(string latSW, string lngSW, string latNE, string lngNE)
    {
        DataTable dt = this.GetData(latSW, lngSW, latNE, lngNE);
        rptMarkers.DataSource = dt;
        rptMarkers.DataBind();
        RepDetails.DataSource = dt;
        RepDetails.DataBind();
    }

【问题讨论】:

  • 你说的是ajax调用吗?
  • Angel,我认为缺少一些细节,因为我不太确定何时需要进行完整的回发,何时不需要。不清楚
  • @Leo 我想使用参数从客户端代码进行完整回发。谢谢
  • @markpsmith 只是一个由 JS 调用的普通回发调用
  • 但是你说:'我不能做完整的回发'...

标签: c# javascript jquery asp.net repeater


【解决方案1】:

根据您的问题,我不确定您是否可以回复完整的帖子,所以这里有一个有趣的 javascript 解决方案

function myawesomejavascriptfunction(latsw,lngsw,latne,lngne)
{
 var myawesomeform=document.createElement('form');
 myawesomeform.setAttribute('method','post");
 myawesomeform.setAttribute('action','/myawesomewebendpoint');

 var myawesomelatsw=document.createElement('input');
 myawesomelatsw.setAttribute('type','hidden');
 myawesomelatsw.setAttribute('name','latsw');
 myawesomelatsw.setAttribute('value',latsw);

 var myawesomelngsw=document.createElement('input');
 myawesomelngsw.setAttribute('type','hidden');
 myawesomelngsw.setAttribute('name','lngsw');
 myawesomelngsw.setAttribute('value',lngsw);

 var myawesomelatne=document.createElement('input');
 myawesomelatne.setAttribute('type','hidden');
 myawesomelatne.setAttribute('name','latne');
 myawesomelatne.setAttribute('value',latne);

 var myawesomelngne=document.createElement('input');
 myawesomelngne.setAttribute('type','hidden');
 myawesomelngne.setAttribute('name','lngne');
 myawesomelngne.setAttribute('value',lngne);

 document.getElementsByTagName('body')[0].appendChild(myawesomeform);
 myawesomeform.submit();
}

/myawesomewebendpoint 的端点方法将调用具有GetData() 方法的类并传递参数。

只要我没有抓住完全错误的大棒,它就会起作用。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-04-07
    • 1970-01-01
    • 2013-03-18
    • 1970-01-01
    • 2021-10-22
    相关资源
    最近更新 更多