我想知道根据我从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;
答案 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>
标记来描述数据。它取决于你哪个最适合你。