Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/370.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 尝试动态生成javascript函数调用并传递字符串_C#_Javascript - Fatal编程技术网

C# 尝试动态生成javascript函数调用并传递字符串

C# 尝试动态生成javascript函数调用并传递字符串,c#,javascript,C#,Javascript,我有一个我无法更改的数据源,该数据源包含一个带有Id的超链接,我可以使用该超链接检索我需要的数据。我创建了一个方法来转换超链接,以调用javascript函数并从超链接传递清除的id,但是我没有得到正确的结果。在其当前状态下,除了将id变量插入ClickIt方法之外,其他一切都在工作。对于本例,id的值是djb137,当我单击新的超链接时,返回的错误是“djb137未定义”。我是否忽略了将参数传递给javascript函数的过程 private string ScrubHref(string s

我有一个我无法更改的数据源,该数据源包含一个带有Id的超链接,我可以使用该超链接检索我需要的数据。我创建了一个方法来转换超链接,以调用javascript函数并从超链接传递清除的id,但是我没有得到正确的结果。在其当前状态下,除了将id变量插入ClickIt方法之外,其他一切都在工作。对于本例,id的值是djb137,当我单击新的超链接时,返回的错误是“djb137未定义”。我是否忽略了将参数传递给javascript函数的过程

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+"');\"";