Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/272.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
调用c#方法时.aspx中的上下文出错_C#_Html_Asp.net_Leaflet - Fatal编程技术网

调用c#方法时.aspx中的上下文出错

调用c#方法时.aspx中的上下文出错,c#,html,asp.net,leaflet,C#,Html,Asp.net,Leaflet,在我的前端,我尝试动态地调用方法,但是我不断地得到上下文错误。 我的代码如下所示,错误由我的“i”给出: .aspx: ... 一些代码 AllObject=“”; 标记([0,0],0).addTo(map).bindpoop(“测试”); 对于(变量i=0;i

在我的前端,我尝试动态地调用方法,但是我不断地得到上下文错误。 我的代码如下所示,错误由我的“i”给出: .aspx:


... 一些代码
AllObject=“”;
标记([0,0],0).addTo(map).bindpoop(“测试”);
对于(变量i=0;i<2;i++)
{
对象长度=所有对象[i]。经度;
ObjLatitue=AllObject[i]。纬度;
创建标记(对象长度、对象宽度)
标记([0,0],0).addTo(map).bindpoop(“测试”);
L.marker([0,50],0).addTo(map).bindpoppup(ObjLatitue);
}
函数CreateMarkers(ObjLong、ObjLat){
L.marker([ObjLong,ObjLat],0).addTo(map).bindpoop(“测试”);
}
... 一些代码
.aspx.cs:

public List<MapObjectEntity> ParseMapObjects()
{
    List<MapObjectEntity> MapObjects = new List<MapObjectEntity>();

   .... Some code

    return MapObjects;

}
public class MapObjectEntity
{
    // Properties
    public Guid MapObjectGuid { get; set; }
    public string Data { get; set; }
    public int Latitude { get; set; }
    public Guid Link { get; set; }
    public int Longitude { get; set; }
    public int RelativeHeight { get; set; }
    public int RelativeWidth { get; set; }
    public int Rotation { get; set; }
    public bool ObjectShowFov { get; set; }
    public Guid MapObjectType { get; set; }
}
公共列表ParseMapObjects()
{
List MapObjects=新列表();
……一些代码
返回MapObjects;
}
公共类MapObjectEntity
{
//性质
公共Guid MapObjectGuid{get;set;}
公共字符串数据{get;set;}
公共整数纬度{get;set;}
公共Guid链接{get;set;}
公共整数经度{get;set;}
公共int相对权重{get;set;}
公共int相对宽度{get;set;}
公共整数旋转{get;set;}
public bool ObjectShowFov{get;set;}
公共Guid MapObjectType{get;set;}
}
因此,在ParseMapObjects中,我返回MapObjectEntity的列表。然后,我尝试在我的.aspx(frontend)中捕获它,以便将其用作对象(例如:object.property)

AllObject=“”我成功地拉取了对象,但似乎找不到使用
AllObject
获取属性的方法(例如:AllObject[0].Latitude)

我的目标是循环我的AllObject并提取所有纬度和经度值。但我可以
谢谢

您需要序列化

 public string ParseMapObjects()
 {  
        List<MapObjectEntity> MapObjects = new List<MapObjectEntity>();

        return new System.Web.Script.Serialization.JavaScriptSerializer().Serialize(MapObjects);
    }
公共字符串ParseMapObjects()
{  
List MapObjects=新列表();
返回新的System.Web.Script.Serialization.JavaScriptSerializer().Serialize(MapObjects);
}
和脚本中的访问权限类似

var AllObject = <%=(ParseMapObjects())%>;
var AllObject=;
除非ParseMapObjects()返回JSON字符串(类似于caner的答案) 这行不通

请记住,一旦加载了页面,该值将是固定的,因为它是输出到页面的C#方法的结果,而不是对该方法的引用。如果多次运行Javascript,则该行中分配给
AllObject
的值将保持不变,因为它在JS上下文中基本上是一个静态对象(检查浏览器的视图源以查看输出内容)

不能直接从JavaScript调用C#方法,反之亦然。C#在服务器上执行,并构造HTML、CSS和JS以输出到浏览器。页面(即C#生成的内容)从服务器下载到浏览器并初始化后,JavaScript在客户端浏览器中运行。他们处于完全不同的环境中(通常在不同的计算机上),本质上彼此不了解。如果您想开发web应用程序,这种分离是一个必须掌握的重要概念


如果您希望客户端(浏览器)和服务器之间的通信超出正常的页面加载/刷新/回发机制,那么您需要使用AJAX功能,甚至如果您想要实时通信,类似WebSockets和/或signer的东西。

您不能使用这种方法从客户端调用代码隐藏的公共方法。您需要将该方法声明为webmethod,并使用AJAX调用它。。我尝试了这个,但是如果我检查AllObject的内容,我只得到这个:“[]”。我试着用它来表示:AllObject.Longitude,我什么都没有得到,甚至智能感知也没有显示任何东西。你填好你的列表了吗?您应该像下面这样获得返回的json
$(document).ready(函数(){var AllObject=;})可能你的
某些代码中有问题。你能发布吗?试着调试
ParseMapObjects()
我必须将所有内容转换为JSON,你说得对!现在我可以玩了。
var AllObject = <%=(ParseMapObjects())%>;