.NET:可以根据URL参数更改XPath()表达式吗?

时间:2009-01-12 22:39:03

标签: .net xpath filter

我正在设置一个简单的页面,它只显示XML文件的内容,并允许用户按关键字过滤。

我是一个严肃的.NET新手,但我已经设置了一个XmlDataSource:

<asp:XmlDataSource ID="RSSFeedDataSource" runat="server"  DataFile="test.xml"
        XPath="/rss/channel/item[contains(title,"theKeyword")]"></asp:XmlDataSource>

所以我想允许用户输入关键字并根据它更改数据源。

我想我会使用文本输入中的关键字进行回发,抓取该关键字并以某种方式插入XPath表达式...

我现在只是为了简单,但这是最简单的方法吗?

3 个答案:

答案 0 :(得分:0)

您可以在页面内部执行此操作,如下所示:

<asp:XmlDataSource ID="RSSFeedDataSource" runat="server" 
  DataFile="test.xml"
  XPath="/rss/channel/item[contains(title,"<%=Request.QueryString["filter"] %>")]"></asp:XmlDataSource>

如果这不起作用,为什么不使用查询字符串或发布值在代码隐藏中设置XPath属性?

答案 1 :(得分:0)

通过后面的代码和按钮回发来获取它的方法

ASP页面:

<asp:TextBox id="txtKeyword" runat="server" />
<asp:Button id="btnKeyword" OnClick="btnKeyword_Click" runat="server" />

代码背后:

public void btnKeyword_Click(Object sender, EventArgs e)
{
  // Assuming C#
  // Retrieve the keyword from the text box
  string keyword = txtKeyword.Text

  // Next step would be to modify the XPath of your XmlDataSource
  RSSFeedDataSource.XPath = "/rss/channel/item[contains(title," + keyword + ")]"
}

答案 2 :(得分:0)

在回发上,你应该能够做到

RSSFeedDataSource.XPath = "/rss/channel/item[contains(title,'" + txtKeyword.Text + "')]";

假设关键字来自id为txtKeyword的服务器控件