【问题标题】:Adding javascript to a hyperlink control将 javascript 添加到超链接控件
【发布时间】:2015-01-14 01:35:41
【问题描述】:

尝试在超链接点击事件上添加 Javascript。 在这里,我得到了超链接的名称,但是当我尝试单击超链接时没有任何反应。

tblCell = new HtmlTableCell();
List<string> liEmailIdsForCC = new List<string>();
if(some condition)
{
liEmailIdsForCC .add("someitem");
}

HyperLink hpOwnerName = new HyperLink();
hpOwnerName.Text += string.Format("({0})  ", "FullName");
string args = string.Format("{0},{1}"
                           , this
                           , liEmailIdsForCC                           
                           );

var onClick = String.Format("javascript:OnNameClick({0});return false;", args);
hpOwnerName.Attributes.Add("onclick", onClick);
tblCell.Controls.Add(hpOwnerName);

现在,在这个 javascript 中,我只是想提醒列表中的第一项

function OnNameClick(sender, list) {
    alert(li[0]);
}

【问题讨论】:

  • 但是 li[0] 它在哪里?它不像参数那样发送。
  • 为什么要发送逗号分隔的字符串作为参数?您还将this 转换为字符串,这不是您想要的。正如@WilfredoP 所说,在您的javascript 函数li 中不存在。我想你的意思是list
  • 是的,列表[0]。但是点击超链接没有任何反应
  • 您是否在浏览器的页面源代码中看到您的 JavaScript 代码?
  • @zmechanic 是的,我可以

标签: javascript c#


【解决方案1】:

客户端脚本无法访问服务器端列表。我不知道 liEmailIdsForCC.ToString 会返回什么,但我认为这不会是 JavaScript 可以使用的东西。如果您想访问字符串列表,我会将其转换为 JavaScript 数组。类似于以下内容。尽管您可能应该转义字符串。

tblCell = new HtmlTableCell();
List<string> liEmailIdsForCC = new List<string>();
if(some condition)
{
    liEmailIdsForCC.add("someitem");
}

HyperLink hpOwnerName = new HyperLink();
hpOwnerName.Text += string.Format("(FullName)  ", "FullName");

string listJSArray = string.Format("['{0}']", string.Join("', '", liEmailIdsForCC.ToArray());

var onClick = string.Format("OnNameClick(this, {0}); return false;", listJSArray);
hpOwnerName.Attributes.Add("onclick", onClick);
tblCell.Controls.Add(hpOwnerName);

// javascript code...
function OnNameClick(source, list) {
    alert(list[0]);
}

【讨论】:

  • 我需要传递'this;,因为我包含的参数很少
  • this,当您使用它时,它指的是类,而不是导致它被调用的对象。我已经修改它以传递调用它的 html 元素,这就是我认为“源”通常在 ASP.NET 中的内容。
猜你喜欢
  • 1970-01-01
  • 2013-04-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-09-03
相关资源
最近更新 更多