gpt4 book ai didi

c# - 在 WebMethod 内强制回发

转载 作者:行者123 更新时间:2023-11-28 07:59:59 25 4
gpt4 key购买 nike

我正在使用第三方控件来实现 GIS map 相关功能。我需要从 javascript 中调用 C# 方法。我选择像这样使用 PageMethods:

PageMethods.getFeature(x,y)

只要将方法转换为 [WebMethod]

,就可以发挥作用

在这个方法中,我传入鼠标坐标,它返回 map 特征。我将在 map 上突出显示这一点。

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

我的WebMethod看起来像这样:

[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# 代码。在我需要访问用户界面之前,这一切都非常有效。从技术上讲,“WebMethod”几乎就像调用 Web 服务。您无法让远程 Web 服务更新 UI。您可以做的是,在 jQuery 中调用 [WebMethod] 的函数运行后,让它调用一个新页面 (window.location)。该位置可以调用原始页面(在我的例子中为 Default.aspx)。我在需要发送到 UI 的请求字段中传递了参数,并且我基本上将代码放入其中,如果在加载时您看到特定的请求变量,则执行某些操作...它就像一个魅力。

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

window.location.replace("ZoomAndCenter.aspx?x=" + (e.pageX - posX) + "&y=" + (e.pageY - posY))

这是我的 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
}

关于c# - 在 WebMethod 内强制回发,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25551675/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com