C# 尝试动态生成javascript函数调用并传递字符串
我有一个我无法更改的数据源,该数据源包含一个带有Id的超链接,我可以使用该超链接检索我需要的数据。我创建了一个方法来转换超链接,以调用javascript函数并从超链接传递清除的id,但是我没有得到正确的结果。在其当前状态下,除了将id变量插入ClickIt方法之外,其他一切都在工作。对于本例,id的值是djb137,当我单击新的超链接时,返回的错误是“djb137未定义”。我是否忽略了将参数传递给javascript函数的过程C# 尝试动态生成javascript函数调用并传递字符串,c#,javascript,C#,Javascript,我有一个我无法更改的数据源,该数据源包含一个带有Id的超链接,我可以使用该超链接检索我需要的数据。我创建了一个方法来转换超链接,以调用javascript函数并从超链接传递清除的id,但是我没有得到正确的结果。在其当前状态下,除了将id变量插入ClickIt方法之外,其他一切都在工作。对于本例,id的值是djb137,当我单击新的超链接时,返回的错误是“djb137未定义”。我是否忽略了将参数传递给javascript函数的过程 private string ScrubHref(string s
private string ScrubHref(string statementHtml)
{
string pattern = "href.*?\"(?<href>.*?)\"";
return Regex.Replace(statementHtml, pattern, delegate(Match match)
{
string v = match.ToString();
string id = Regex.Match(v, "\"([^\"]*?)\"").Groups[1].Value;
string returnValue = "href=\"#\"" + "onclick=\"return ClickIt("+id+");\"";
return returnValue;
});
}
然后我的javascript函数将整个href毫无问题地传递给它。但我只需要Id,而不是整个href。在将Id传递给函数调用时,需要引用Id 线路
string returnValue = "href=\"#\"" + "onclick=\"return ClickIt("+id+");\"";
应该是
string returnValue = "href=\"#\"" + "onclick=\"return ClickIt('"+id+"');\"";
现在的情况是,它认为djb137
是一个变量名,想想如果不以这种方式构造方法调用,方法调用会是什么样子。以下两者之间有什么区别
return ClickIt(djb137); // looks like a variable identifier
return ClickIt('djb137'); // passing a string to the function call
更改此行:
string returnValue = "href=\"#\"" + "onclick=\"return ClickIt("+id+");\"";
到
请注意其中的附加引号。用正则表达式解析HTML是一件非常糟糕的事情,可能会产生一些负面后果,如这里所述:喜欢该链接中的答案,但只是因为它的混乱。一般来说,用正则表达式解析HTML没有问题——只要你真正理解正则表达式,而不是简单地从谷歌上复制它们。因为我所需要做的就是在href中捕获特定的id,我想快速正则表达式在这里不会有问题。是的,这样做了,谢谢!完全忽略了添加的引号。也谢谢你,但我接受格雷格,因为他是第一个被秒。绝对!我没有感到更糟
string returnValue = "href=\"#\"" + "onclick=\"return ClickIt("+id+");\"";
string returnValue = "href=\"#\"" + "onclick=\"return ClickIt('"+id+"');\"";