2017-11-25 188 views
1

我有一些Visual Basic代码:VB到C#字符串翻译

 Dim jsScript As String = <js><![CDATA[ 
document.all("q").value = "stack overflow"; 
document.all("search_button_homepage").click(); 
          ]]></js>.Value 
    browser.ExecuteScriptAsync(jsScriptB) 

执行字符串,如JavaScript到Cefsharp浏览器。所以我想翻译成C#这一点,我这样做:

string jscriptB = <js><![CDATA[ 
document.all("q").value = "stack overflow"; 
document.all("search_button_homepage").click(); 
          ]]></js>.Value 
browser.ExecuteScriptAsync(jsScriptB) 

我也得到了一大堆错误信息,如:

错误CS0103名称“文件”中不存在当前上下文

无效表达术语“<”

有人能解释发生了什么,以及如何解决它?我无法想象为什么一个简单的字符串转换不起作用。感谢您的时间,祝您有美好的一天。

编辑: 所以我现在有:

var test = @"<js>< ![CDATA[ 
    document.all(""q"").value = ""stack overflow""; 
      document.all(""search_button_homepage"").click(); 
          ]]></ js >.Value"; 
browser.ExecuteScriptAsync(test); 

但是,像VB代码没有它不执行JavaScript。任何人都可以解释吗?

+0

C#不支持XML文本如VB。通过在字符串前添加一个'@':'var script = @“document.all('q')。value = ....”'它支持行(而不是xml)也会中断(输入密钥)。对于双引号,您需要使用第二个双引号“@”进行转义,这里有一个“”引用“”“ – pinkfloydx33

+0

@ pinkfloydx33您的解决方案摆脱了错误消息,但现在JavaScript无法正常工作 – WilkyRL

回答

0

C#没有VB的XML文本的功能,所以你必须给自己打电话XElement.Parse方法:

string jsScript = System.Xml.Linq.XElement.Parse("<js><![CDATA[ document.all(\"q\").value = \"stack overflow\"; document.all(\"search_button_homepage\").click(); ]]></js>").Value; 
browser.ExecuteScriptAsync(jsScriptB);