0

関数でハイパーリンクを挿入したラベルがあります。

Private Sub showLink(title As String, cost As String, asin As String)
    Label1.Text = (String.Format("<a href=\WebSite3\LinkDisplay.aspx?Title=" + System.Web.HttpUtility.UrlEncode(title) + "&Price=" + System.Web.HttpUtility.UrlEncode(cost) + "&ASIN=" & System.Web.HttpUtility.UrlEncode(asin) + " \>" + title + "/" + cost + "/" + asin + "</a>"))
End Sub

title + "/" + cost + "/" + asinで分割するために、文字列にアクセスしたいと思いますString.Split("/")

しようとするとエラーが発生しますDim fields As String() = Label1.Text.Split("/")

<a>タグの間にあるテキストだけを取得するには、どの関数を使用すればよいですか?

4

2 に答える 2

1

まず、ラベルを使用する代わりに、HyperLink オブジェクトを使用します。次のように URL を設定できます。

Private Sub showLink(ByVal title As String, ByVal cost As String, ByVal asin As String)
    Dim link As String = System.Web.HttpUtility.UrlEncode(String.Format("WebSite3/LinkDisplay.aspx?Title={0}&Price={1}&ASIN={2}", title, cost, asin))
    HyperLink1.NavigateUrl = link
    HyperLink1.Text = String.Format("{0}/{1}/{2}", title, cost, asin)
End Sub

次に、次のように URL のクエリ文字列値を読み取ることができます。

Private Sub GetLinkAttributes()
    Dim url As New Uri("http://" & HttpUtility.UrlDecode(HyperLink1.NavigateUrl.ToLower))
    Dim fields As NameValueCollection = HttpUtility.ParseQueryString(url.Query)
    Debug.Print(String.Format("{0} / {1} / {2}", fields("title"), fields("price"), fields("asin")))
End Sub

サンプルコードでバックスラッシュを使用していたため、取得していたエラー (HttpRequestValidationException) がスローされた可能性があります。

于 2012-04-16T20:42:28.667 に答える
0

まず第一に、これを行うには、ラベルではなくリテラル コントロールを使用する必要があります。または、何らかのリンク コントロールを使用することをお勧めします。

最初にこれを尋ねたときから詳細をあまり追加していませんが、コントロールがサーバー コントロールである限り、 を使用してテキストを取得できますLabel1.Text

テキストを取得したら、必要な部分を解析する必要があります。これには本当のトリックはありません。興味のないテキストの部分を削除する必要があります。

この最後のタスクは、何らかのタイプのリンク コントロールを使用すると、リンク テキストの値を確認するだけで済むため、はるかに簡単になります。

于 2012-04-16T18:49:14.360 に答える