基于Webrequest的项目列表

时间:2014-11-18 10:09:46

标签: c# asp.net list webforms

我想知道根据我从HttpWebRequest获得的信息,使用c#在asp.net Web表单中创建项目列表的最佳方法是什么。在我的Page_Load中,我向返回xml的Wowza媒体服务器发出Web请求。我将其保存在一个字符串中,然后使用xmlreader获取我需要的数据。完成此操作后,我想在我的Web表单的列表中查看此内容。我希望我很清楚。

我还希望能够点击将运行功能的项目。

编辑: 我不能为我的生活得到建议的工作答案,当我运行代码时,网站完全空白。以下是c#和html文件代码:



using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Xml;
using System.IO;
using System.Net;

public partial class Test : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
        List<String> LiveStreamms = new List<String>();
        string xml = "<ArrayOfLiveStream xmlns:i='http://www.w3.org/2001/XMLSchema-instance' xmlns='http://schemas.datacontract.org/2004/07/MvcApplication1.Models'><LiveStream><Name>Test1</Name><Path>Path1</Path></LiveStream></ArrayOfLiveStream>";
        XmlReader reader = XmlReader.Create(new StringReader(xml));
        XmlDocument doc = new XmlDocument();
        doc.Load(reader);
        LiveStreams.Data = doc.OuterXml;
        LiveStreams.XPath = "/LiveStream/Name";
    }
}
&#13;
<%@ Page Language="C#" CodeFile="Test.aspx.cs" Inherits="Test" runat="server"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">


<html xmlns="http://www.w3.org/1999/xhtml" >
  <head runat="server">
    <title>ASP.NET Example</title>
</head>
<body>
    <form id="form1" runat="server">

      <asp:XmlDataSource
        id="LiveStreams"
        runat="server"
        XPath="/ArrayOfLiveStream"/>

      <asp:DataList
        id="PeopleDataList"
        DataSourceID="LiveStreams"
        Runat="server">

        <ItemTemplate>
          <table cellpadding="4" cellspacing="4">
            <tr>
              <td style="vertical-align:top; width:120">
                <asp:Label id="PathNameLabel" Text='<%# XPath("Livestream/Path") %>' runat="server" />, 
                <asp:Label id="NameLabel" Text='<%# XPath("Livestream/Name") %>' runat="server" />
              </td>
            </tr>
          </table>
        </ItemTemplate>
      </asp:DataList>
    </form>
  </body>
</html>
&#13;
&#13;
&#13;

1 个答案:

答案 0 :(得分:0)

您可以使用XmlDataSource和数据列表来执行此操作有一个很好的写在msdn here上有关如何执行此操作 基本上你采用xml并在模板中使用XPath查询来创建所需的效果。

因为这篇文章可能已经过时,我会提供他们的样本,但这不是我的代码。

<%@ Page Language="C#" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml" >
  <head runat="server">
    <title>ASP.NET Example</title>
</head>
<body>
    <form id="form1" runat="server">
      <asp:XmlDataSource
        id="PeopleDataSource"
        runat="server"
        XPath="/People/Person"
        DataFile="~/App_Data/people.xml" />

      <asp:DataList
        id="PeopleDataList"
        DataSourceID="PeopleDataSource"
        Runat="server">

        <ItemTemplate>
          <table cellpadding="4" cellspacing="4">
            <tr>
              <td style="vertical-align:top; width:120">
                <asp:Label id="LastNameLabel" Text='<%# XPath("Name/LastName")%>' runat="server" />, 
                <asp:Label id="FirstNameLabel" Text='<%# XPath("Name/FirstName")%>' runat="server" />
              </td>
              <td valign="top">
                 <asp:Label id="StreetLabel" Text='<%# XPath("Address/Street") %>' runat="server" /><br />
                 <asp:Label id="CityLabel" Text='<%# XPath("Address/City") %>' runat="server" />, 
                 <asp:Label id="RegionLabel" Text='<%# XPath("Address/Region") %>' runat="server" />
                 <asp:Label id="ZipCodeLabel" Text='<%# XPath("Address/ZipCode") %>' runat="server" />
              </td>
            </tr>
          </table>
        </ItemTemplate>
      </asp:DataList>
    </form>
  </body>
</html>

如果您注意到xml正在加载到数据源中然后在数据列表模板中使用,则每个记录使用XPath查询并使用限定名称。它有点像使用转发器。

另请注意,您不必使用Xml文件,您可以使用XmlDataSource上的Data属性绑定到您从字符串创建的XmlDocument。例如

XmlDocument方式:

XmlDocument doc = new XmlDocument();
doc.Load(reader);
xmlDataSource.Data = doc.OuterXml;
xmlDataSource.XPath = "/People/Person";

XDocument方式:

XDocument doc = XDocument.Parse(xml);
xmlDataSource.Data = doc.ToString();
xmlDataSource.XPath = "/People/Person";

.Data属性记录为here,另请注意,如果数据是静态的(在您的情况下不是),您可以使用<data>标记来描述数据。它取决于你哪个最适合你。

相关问题