C# 在WebMethod内强制回发
我使用第三方控件实现GIS地图相关功能。 我需要从javascript中调用C方法。我选择使用这样的分页方法: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],它就
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方法应该可以实现这一点,为什么您认为需要强制回发?