.NET: Возможно ли изменить выражение XPath () на основе параметров URL? - PullRequest
2 голосов
/ 13 января 2009

Я настраиваю простую страницу, которая просто отображает содержимое файла XML и позволяет пользователю фильтровать по ключевому слову.

Я серьезный новичок в .NET, но у меня настроен XmlDataSource:

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

Поэтому я хочу разрешить пользователям вводить ключевое слово и изменять источник данных на его основе.

Я подумал, что сделаю постбэк с ключевым словом из текстового ввода, возьму это ключевое слово и каким-то образом вставлю в выражение XPath ...

Сейчас я пойду для простоты, но будет ли это самым простым подходом для этого?

Ответы [ 3 ]

0 голосов
/ 13 января 2009

Метод для захвата через код и кнопку обратной передачи

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 + ")]"
}
0 голосов
/ 13 января 2009

на обратной передаче, вы должны быть в состоянии сделать

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

при условии, что ключевое слово исходит от серверного элемента управления с идентификатором txtKeyword

0 голосов
/ 13 января 2009

Вы можете сделать это на самой странице, например:

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

Если это не сработает, почему бы просто не установить свойство XPath в коде с помощью строки запроса или значений post?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...