如何将服务器端类型传递给 asp.net Web 表单以供 JavaScript 使用

how to pass a serverside Type to asp.net webform for javascript consumption

本文关键字:表单 Web net 使用 JavaScript asp 服务器端 类型      更新时间:2023-09-26

我目前正在尝试将已知的类型(列表)传递给需要在页面加载时由javascript拾取的 asp.net 网络表单。

我正在创建的模拟数据如下所示:

   protected List<MapCoords> createCoordinateList()
    {
       List<MapCoords> latlng = new List<MapCoords>();
       MapCoords m = new MapCoords();
       m.xCoord = 34.241182;
       m.yCoord = -77.946839;
       latlng.Add(m);
       m.xCoord = 34.242176;
       m.yCoord = -77.94538;
       latlng.Add(m);
       return latlng
     }

卡住的地方(也许只是在一天的晚些时候)是过去我进行了 ajax 调用并在结果成功后将对象返回到页面。但是,在这种情况下,此模拟数据是由服务器端事件生成的,因此 ajax 不用于调用或调用该方法。由于对象具有多个属性 (x,y),因此我不能只将值设置为隐藏字段,这就是为什么我认为这需要作为对象传递。 如果推到推,我可以使用 ajax 来调用该方法,但这几乎是对我正在尝试做的事情的双重调用,所以我想避免这是可能的

所以问题是我如何获取包含坐标的列表并使客户端中的 javascript 可以访问它?这种类型可以变得更加健壮(即更多的属性,所以我需要确保属性保持它们的关联 x 到 y)

干杯

可以在 aspx 页或 .asmx Web 服务中使用 Web 方法传递类数组。脚本服务属性会将类数组转换为 json 对象。这个简单的例子来理解你如何做到这一点,jQuery Ajax 与 asp.net

[ScriptService]
public class YourClass : Page
{
    [WebMethod]   
    public static []MapCoords createCoordinateList()
    {
        //Your code
        return arrOfMapCoords;   
    }
}

为您创建了一个小示例:

服务器代码:

public class MapCoords
{
    public double x { get; set; }
    public double y { get; set; }
}
public partial class _Default : System.Web.UI.Page
{
    [WebMethod]
    public static List<MapCoords> createCoordinateList()
    {
        List<MapCoords> latlng = new List<MapCoords>();
        MapCoords m = new MapCoords();
        m.x = 2.00;
        m.y = 3.1512;
        latlng.Add(m);
        m = new MapCoords();
        m.x = 3.00;
        m.y = 4.1512;
        latlng.Add(m);
        return latlng;
    }
}

客户端代码:

<script language="javascript" type="text/javascript">
    $(document).ready(function () {
        $.ajax({
            type: "POST",
            url: "Default.aspx/createCoordinateList",
            data: "{}",
            contentType: "application/json; charset=utf-8",
            dataType: "json",
            success: function (msg) {
                if (msg != null) {
                    for (i = 0; i <= msg.d.length; i++) {
                        alert(msg.d[i].x + " " + msg.d[i].y);   
                    }
                }
            }
        });
    });
</script>

这使用 jQuery 和 jSon。不要忘记包含jQuery库。祝你好运!