指定单击链接时要加载的xml文件

时间:2012-08-30 09:36:25

标签: javascript asp.net xml vb.net

我希望如此,当在主页上点击链接时,它会将特定的xml文件加载到下一页(该页面称为category-list.apsx)。

此类别列表页面使用Repeater Control方法在页面上显示xml详细信息。我使用了这里显示的例子:

http://www.w3schools.com/aspnet/aspnet_repeater.asp

目前转发器脚本如下:

<script runat="server">
    sub Page_Load
    if Not Page.IsPostBack then
       dim mycategories=New DataSet
       mycategories.ReadXml(MapPath("categories.xml"))
       categories.DataSource=mycategories
       categories.DataBind()
    end if
    end sub
</script>

在做了一些研究后,我发现有人遇到了同样的问题,解决方案是在主页上插入#tags作为链接的一部分(即category-list.apsx#company1results),然后在列表页面上输入一些脚本拿起正确的xml文件:

<script type="text/javascript">
    var old_onload = window.onload; // Play it safe by respecting onload handlers set by other scripts.
    window.onload=function()
    {
     var categories = document.location.href.substring(document.location.href.indexOf("#")+1);
     loadXMLDoc('XML/'+categories+'.xml');
     old_onload();
    }
</script>

这来自以下链接:

http://www.hotscripts.com/forums/javascript/45641-solved-specify-xml-file-load-when-click-link.html

如何让这两个脚本相互连接?

1 个答案:

答案 0 :(得分:2)

使用查询字符串而不是散列'#'更容易,因为查询字符串将在服务器端发送,因此不需要客户端javascript。

因此,当您调用category-list.apsx?cat = company1results时,您可以使用以下代码在xml文件之间切换:

Public Sub Page_Load()
    If Not Page.IsPostBack Then
        Dim cat As String = Request.QueryString("cat")

        Dim mycategories As DataSet = New DataSet()
        mycategories.ReadXml(MapPath(cat + ".xml"))
        categories.DataSource = mycategories
        categories.DataBind()
    End If
End Sub