【问题标题】:How to get anchor text in a Session variable?如何在 Session 变量中获取锚文本?
【发布时间】:2016-05-10 04:43:02
【问题描述】:

我正在处理一个项目,在该项目中我在母版页中链接了许多 pdf 文件。单击锚时,页面重定向到指定页面并在 iframe 中显示 pdf。现在我希望显示锚标记中的文本在打开pdf的页面上。 考虑一下我有一个看起来像这样的锚:

<a href="<%= ResolveUrl("~") %>Main_Content.aspx?open=Departments/HR/NewsLetter/newsletter_dec_2014.pdf">News Letter</a>

现在我希望在重定向页面上显示文本“新闻信”。 我想我可以通过将文本保存在会话变量中来实现这一点。但是如何在不为锚标记指定任何 id 或类的情况下将锚文本保存在 Session 变量中?谁能帮帮我?

【问题讨论】:

  • 为什么需要 id 或 class 将锚文本放入会话中?
  • 我不需要 id 或类,我只想在单击锚点时将锚文本保存在会话变量中:)
  • 我认为@Adil 的解决方案是完美的。
  • 不,在这种情况下对我没有帮助

标签: javascript c# jquery asp.net


【解决方案1】:

您可能正在寻找 QueryString 而不是会话,您已经在 QueryString 中传递路径,还传递了锚文本。您需要在创建锚标记时将其添加到 url。

<a href="<%= ResolveUrl("~") %>Main_Content.aspx?open=Departments/HR/NewsLetter/newsletter_dec_2014.pdf&aText=News Letter">News Letter</a>

在服务器端

lblForAnchor.Text = Request.QueryString["aText"].ToString();

编辑您不能在创建查询字符串时更改它,然后您可以在document.ready 的DOM 中加载它时更改它。为您的锚分配一个具体的类。

$( 'a.someclass' ).attr( 'href', function(index, value) {
  return value + '&aText=' + $(this).text();
});

点击锚点的其他方式。

$( 'a.someclass' ),click(function(event) {
    window.location.href = this.href +  '&aText=' + $(this).text();
});

【讨论】:

  • 不,我不想在查询字符串中添加这个,因为有数百个文件链接,所以我不能全部更改,建议我用 javascript 或 jquery 或任何技巧来做 :)
  • 没有得到查询字符串中的值我使用了这个:$('a.sendtext'), click(function (event) { and Main_Content.aspx?open=Departments/HR/NewsLetter/newsletter_dec_2014.pdf">Reach News Letter
  • 您是否将类分配给锚标记并使用了最后两个解决方案?
  • 不,我没有分配任何课程,我只是使用了上面标记为答案的解决方案:)
  • 如果您不指定类,它将应用于页面上的所有锚点。今天可能是正确的,但明天可能是个问题。我们必须在更改 DOM 元素时具体化。
【解决方案2】:

你可以试试这个

$("a").click(function (e) {
if($(this).attr("href").match(".pdf$"))
{
    window.location.href = $(this).attr("href") + "&title=" + $(this).text();
    e.preventDefault();
}
});

在“Main_Content.aspx”中的服务器端

strTitle = Request.QueryString["title"];

【讨论】:

  • 非常感谢,它解决了我的问题。这是解决这个问题的非常酷的解决方案,无需修改锚或任何标签,非常感谢:) :) :)
  • 我会支持你的回答(y)支持我:)
【解决方案3】:

您可以使用 javascript 动态编写内容:

<a href="<%= ResolveUrl("~") %Main_Content.aspx?open=Departments/HR/NewsLetter/newsletter_dec_2014.pdf">News Letter</a>

Javascript:

<script language="javascript">
function openWin(t,u) {
docstring='<iframe src='+u+'></iframe>';
win = window.open();
newdoc=win.document;
newdoc.writeln(t);
newdoc.write(docstring);
newdoc.close();
}

var elements = document.getElementsByTagName('a');
for(var i = 0, len = elements.length; i < len; i++) {
elements[i].onclick = function () {

var theAnchor = elements[i].innerHTML;
var theHref = elements[i].href;    

 if(theHref.match(/\.pdf/)){
  openWin(theAnchor,theHref);
 }
}
</script>

或者使用 URL 调用不同的地址并作为参数进行测试,并在服务器端生成文档。

我不确定点击链接会如何表现,但可能值得一试。

链接不应该被修改。

【讨论】:

  • 文本,不是测试。对不起
  • 先生,实际上问题是项目中链接了很多文件,我无法更新整个项目中的锚标记,但我会支持你的回答谢谢......来自我的支持:)
  • 已更新,因此 href 不受影响。如果不以某种方式修改链接、添加 onclick 事件、添加 id、添加类,就无法做到这一点。否则为所有链接添加事件监听器会产生大问题。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-01-30
  • 2013-07-26
  • 2016-07-05
  • 2013-09-20
  • 1970-01-01
  • 1970-01-01
  • 2011-05-31
相关资源
最近更新 更多