0

我想构建一个应用程序,当单击地图上的某个点时,它会发送一个 ajax 请求来更改我页面上的一些服务器控件:

$.post("Default.aspx",
                       { latLng: event.latLng });

在同一页上:

<asp:Panel runat="server" Visible="false" ID="SaveForm">
        <asp:Label runat="server" Text="Save your result:" Font-Size="X-Large"></asp:Label><br /><br />
        <asp:TextBox runat="server" ID="Latitude" ReadOnly="true"></asp:TextBox><br />
        <asp:TextBox runat="server" ID="Longitude" ReadOnly="true"></asp:TextBox><br />
        <asp:TextBox runat="server" ID="Score" ReadOnly="true"></asp:TextBox><br />
        <asp:TextBox runat="server" ID="Comment" Width="500px" Height="200px"></asp:TextBox>
        <asp:Button runat="server" OnClick="Save" />
    </asp:Panel>

aspx.cs:

protected void Page_Load(object sender, EventArgs e)
        {
            if (Session["userId"] == null)
                Response.Redirect("LoginForm.aspx");

            if (Request["latLng"] != null)
            {
                String latLng = Request["latLng"];

                SaveForm.Visible = true;

                char[] delimiterChars = { '(', ',', ')'};
                String[] numbers = latLng.Split(delimiterChars);
                Latitude.Text = numbers[0];
                Longitude.Text = numbers[1];
                Score.Text = (getScore(float.Parse(numbers[0]), float.Parse(numbers[1]))).ToString();
            }
        }

当然这是行不通的,因为它甚至不合逻辑。但是从这段代码中,您可以了解我正在尝试做什么并帮助我。谢谢!

4

3 回答 3

1

我认为这个微不足道的任务的 WCF 服务将是一个矫枉过正。请考虑使用 WebMethods。您可以在可通过 javascript 访问的代码隐藏上定义 WebMethod

前任:

页面.aspx.cs

[WebMethod]
public static void wmSomeMethod(string param)
{
    string test=param;
}

页面.aspx

function callPageMethod(param)
{
    PageMethods.wmSomeMethod(param, onSuccess, onError);
}

请注意,您需要页面上的 ScriptManager 才能使用页面方法。

编辑:这里讨论了 jQuery 的替代方案

于 2012-06-26T13:58:18.720 回答
0
  1. 在服务器端制作 WCF 服务webHttpBinding
  2. 制作 jQuery 事件 onlclick 或您需要的东西
  3. 使用 jQuery ajax 调用调用您的 WCF 服务
  4. 将结果应用于您的控件

这是一个使用 jQuery 调用 WCF 服务的示例

于 2012-06-26T13:53:12.997 回答
0

如果您希望它通过 AJAX 请求工作,您有两个选择。

一种是使用 Asp.Net 更新面板(不推荐,但可能最简单)。这将自动对服务器端的事件处理程序进行 ajax 回发,并允许您对更新面板内的服务器控件背后的代码进行更改,这些更改将被传播回用户。这是一篇关于更新面板的好文章。但是,请注意,我们在我工作的地方使用过它们,但对它们并不满意,因为它们比纯 AJAX 更重量级和更不和谐。

二,从您的伪代码看来,您实际上不需要服务器提供任何东西,您只希望您的纬度和经度来修改您的 HTML。如果是这种情况,您可以编写直接修改您的 HTML 以显示您想要的内容的 JavaScript。

对于选项二,重要的是要知道服务器控件并不神奇。一旦它们成为客户端,它们就像页面上的任何其他内容一样被表示为 HTML 标记,并且可以像其他任何内容一样使用 JavaScript 进行修改。

如果您确实需要在修改客户端看到的内容的同时进行某种操作服务器端,我建议您编写一个轻量级的 Web 服务来侦听 ajax 请求并执行您需要完成的操作,而不是使用更新面板。

于 2012-06-26T14:06:14.660 回答