【问题标题】:VB to C# string translationVB 到 C# 字符串翻译
【发布时间】:2018-05-09 09:11:39
【问题描述】:

我有一些可视化的基本代码:

       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。谁能解释一下?

【问题讨论】:

  • C# 不支持像 vb 这样的 xml 文字。通过在字符串前面加上@var script = @"document.all('q').value =...." ,而不是使用逐字字符串文字(没有cdata)它也支持换行符(输入键)。对于双引号,您需要使用第二个双引号 @"there's a ""quote"" here" 进行转义
  • @pinkfloydx33 您的解决方案消除了错误消息,但现在 javascript 无法正常工作

标签: javascript c# vb.net compiler-errors


【解决方案1】:

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);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-10-11
    • 2014-08-10
    • 2010-10-23
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多