簡體   English   中英

如何將服務器端類型傳遞給asp.net Webform以使用JavaScript

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

我目前正在嘗試將已知的類型(列表)傳遞給需要由頁面加載中的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網絡服務中使用網絡方法傳遞類數組。 ScriptService屬性會將您的類數組轉換為json對象。 這個簡單的例子,了解如何實現, 帶有asp.net的jQuery Ajax

[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庫。 祝好運!

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM