C# 在WebMethod内强制回发

C# 在WebMethod内强制回发,c#,javascript,webmethod,C#,Javascript,Webmethod,我使用第三方控件实现GIS地图相关功能。 我需要从javascript中调用C方法。我选择使用这样的分页方法: PageMethods.getFeature(x,y) [WebMethod(EnableSession = true)] public static void getFeature(float x, float y) {... some code in here. } 只要您将方法转换为[WebMethod],它就

我使用第三方控件实现GIS地图相关功能。 我需要从javascript中调用C方法。我选择使用这样的分页方法:

PageMethods.getFeature(x,y)
[WebMethod(EnableSession = true)]
        public static void getFeature(float x, float y)
        {...
        some code in here. 
        }
只要您将方法转换为[WebMethod],它就会像一个符咒一样工作

在这个方法中,我传递鼠标的坐标,它会返回地图特征。我将在地图上突出显示

通过研究,我发现您无法从[WebMethod]内部直接访问UI,因此我决定设置一个会话变量并回发。在回发时,如果会话变量存在,我将进行必要的UI更改

我的WebMethod如下所示:

PageMethods.getFeature(x,y)
[WebMethod(EnableSession = true)]
        public static void getFeature(float x, float y)
        {...
        some code in here. 
        }
更新 这是我的jQUery:

  <script>
        $(document).ready(function (e) {
            $(".MyMap").click(function (e) {
                var posX = $(this).position().left;
                var posY = $(this).position().top;
                PageMethods.getFeature(e.pageX-posX, e.pageY-posY);
              });
        });
    </script>

如何在WebMethod内部强制回发。我知道的大多数回发方式都不起作用

特别感谢@BenRobinson在正确的方向上帮助我。这是我想到的。我把这个贴在其他可能犯类似错误的人身上。简单的回答是:*你不能

我的主要问题是我使用的是[WebMethod],因此可以从jQuery调用我的c代码。在我需要访问UI之前,它一直工作得很好。从技术上讲,“WebMethod”几乎就像调用web服务一样。您不能让远程web服务更新UI。在jQuery中运行调用[WebMethod]的函数之后,您可以做的是让它调用一个新的页面window.location。在my case Default.aspx中,该位置可以调用原始页面。我在请求字段中传递了需要发送到UI的参数,我基本上把代码放在其中,如果在加载时您看到一个特定的请求变量,那么请执行一些操作。。。它就像一个符咒

下面是一个粗略的例子: 在我的jQuery页面中,我这样做是为了导航到一个新页面:

window.location.replace("ZoomAndCenter.aspx?x=" + (e.pageX - posX) + "&y=" + (e.pageY - posY))
以下是my ZoomAndCenter.aspx的外观:

protected void Page_Load(object sender, EventArgs e)
            {
                int x = 0;
                double y = 0;
                x = Int32.Parse(Request["x"].ToString());
                y = Double.Parse(Request["y"].ToString());
                //Run some more code
                Response.Redirect("Default.aspx?Param1=xxxx&Param2=xxxx");
                //passed the params in the redirect.
             }
然后在Default.aspx中

 if(request["param1"] == "something")
{
//do something
}

不能使浏览器从服务器向服务器发布表单。这是一个客户端操作。您可以编写JavaScript,当它收到web服务的响应时会导致回发。@BenRobinson这是一个很好的观点。。。嗯。javascript用于获取MouseClick事件并知道图像被单击的位置。这将传递给c中的方法。有没有其他不使用WebMethod的方法来实现这一点。我将jQuery用于javascript函数。您希望jQuery ajax调用的结果是什么?MVC和WebAPI控制器也可以处理ajax请求,WebAPI特别强大和灵活。它应该调用一些代码,获取鼠标位置数据并将其转换为Lat和Long。我有一个第三方的图书馆,做一切。它最初是为WinForms设计的,后来经过改造,可用于Asp.NET页面。我只需要输入用户在mapcontrol上单击的鼠标位置,mapcontrol实际上只是一个html图像控件。web方法应该可以实现这一点,为什么您认为需要强制回发?