将字符串列表传递给javascript,由asp代码在方法后面发送
pass list of string to javascript that is sent by asp code behind method
我试图在没有任何刷新的情况下在我的页面中显示在线火车。所以我想我必须使用javascript来做到这一点。所以我是javascript的初学者。所以让我解释一下我的问题。
我必须使用javascript:
执行这部分代码 <%
OnlineTrainList = TimeTableRepository.GetAll().ToList();
foreach (var t in OnlineTrainList)
{
Response.Write("<div id='train-box' style='margin-left:"+(t.XTrainLocation-8)+"px;margin-top:"+t.YTrainLocation+"px;background:"+t.Train.TrainColor+"'>" +
"<span>" +
t.TrainId +
"</span>" +
"</div>");
List<Sensor> PassedSensor = new List<Sensor>();
PassedSensor = SensorRepository.FindBy(i => i.CurrentTrainId == t.TrainId).ToList();
string color = TrainRepository.FindBy(i => i.Id == t.TrainId).First().TrainColor;
foreach (Sensor sensor in PassedSensor)
{
Response.Write("<div class='CurrentColor-Sensor' style='margin-left:" + (sensor.XLocation-1 ) + "px;margin-top:" + (sensor.YLocation+8) + "px;background:" + color + "'></div>");
}
}
%>
此代码每次刷新并获得在线列车位置并显示在页面上,但我必须使用javascript。
所以我创建了一个。asmx文件如下:namespace ShirazRailWayWeb.Service
{
[WebService(Namespace = "http://tempuri.org/")]
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
[System.ComponentModel.ToolboxItem(false)]
public class SiteLocationService : System.Web.Services.WebService
{
public TimeTableRepository TimeTableRepository = new TimeTableRepository();
public SensorRepository SensorRepository = new SensorRepository();
public List<TimeTable> OnlineTrainList = new List<TimeTable>();
public TrainRepository TrainRepository = new TrainRepository();
[WebMethod]
public string myfunc()
{
}
}
}
我的问题是如何将值列表传递给javascript。我应该在َُ**asmx**文件中加载我的数据并在我的页面中调用此函数。但我不知道如何将数组在线列车列表传递给我的页面。
这是我的存储库,生成的数据。但这个数据是一个列表,我不知道我怎么能把这个数据传递到我的页面!!
public TimeTableRepository TimeTableRepository = new TimeTableRepository();
public SensorRepository SensorRepository = new SensorRepository();
public List<TimeTable> OnlineTrainList = new List<TimeTable>();
public TrainRepository TrainRepository = new TrainRepository();
任何想法。您可以使用Asp。Net UpdatePanel为您处理部分页面渲染。
为了让你的UpdatePanel的内容按照你的请求每秒钟更新一次,你需要使用javascript来调用自动渲染的Asp。. Net回发函数,以更新面板的id作为参数。
下面是一个完整的服务器端时钟示例:在你的aspx页面的html部分添加这个block:
<asp:UpdatePanel ID="UpdatePanel1" runat="server" OnLoad="UpdatePanel1_Load">
<ContentTemplate>
<label id="Label_For_Server_Time" runat="server"></label>
</ContentTemplate>
</asp:UpdatePanel>
在这里你可以看到一个标签运行在服务器上,所以我们可以从后面的代码访问它;
在你的aspx页头,添加这个:
<script type="text/javascript">
$(function () {
setInterval("__doPostBack('<%=UpdatePanel1.ClientID%>', '');", 1000);
});
</script>
这段代码负责每秒更新一次updatepanel,或者说是每1000毫秒更新一次。
函数__doPostBack()
是一个asp.net生成的函数,通过调用setInterval
,我们使更新面板每秒钟发布一次。
这里的$(function (){});
包装器只是为了防止在DOM完全加载之前执行代码。你用jQuery标记了你的问题,所以我想你没问题。
在您的代码后面,您需要添加updatepanel的加载处理程序,它在面板发布时运行:
protected void UpdatePanel1_Load(object sender, EventArgs e)
{
Label_For_Server_Time.InnerText = DateTime.Now.ToString();
}
- 有没有一种方法可以通过只引用JavaScript来执行代码
- 从window.onbeforeunload调用方法背后的代码
- 是否有一种方法可以使用公共代码库在Java和JavaScript中进行输入验证
- 使用较少代码隐藏和显示选择菜单内容的更好方法是什么?javascript
- 我需要把createUser代码放在流星方法中吗
- 在 Javascript 中实现解耦代码/回调的正确方法是什么?
- 如何在jQuery.CSS()方法中为所有浏览器编写CSS代码
- 角度方法返回未绘制的代码
- 使用ScriptManager.RegisterStartupScript从代码隐藏调用javascript方法
- 崇高的jslint:任何忽略特定代码段的方法
- 有没有更好的方法来编写这个Show/hide JQuery代码
- 在我的代码中管理大量硬编码数据的最佳方法
- 需要减少用于获取日期格式的javascript方法代码
- 通过找到一种删除许多 if 语句的方法来简化代码
- 使用each()方法来动画化代码类型
- 我可以替换“;获取“;方法用“;POST”;代码库中的任何位置
- Javascript方法以字符串形式返回方法代码
- Nashorn故障排除”;方法代码太大"例外
- 重构 npm 请求方法代码
- Javascript原生排序方法代码