Перевод строки из VB в C #

1

У меня есть визуальный базовый код:

       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. Поэтому я хочу перевести это на С#, и я это делаю:

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

И я получаю целую кучу сообщений об ошибках, таких как:

Ошибка CS0103 Имя "документ" не существует в текущем контексте

Недопустимый термин выражения <<

Может кто-нибудь объяснить, что происходит и как это исправить? Я не могу себе представить, почему простое преобразование строк не работает. Спасибо за ваше время и у вас отличный день.

edit: Итак, теперь у меня есть:

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

Но он не выполняет javascript, как это сделал код vb. Может кто-нибудь объяснить это?

  • 0
    C # не поддерживает XML-литералы, такие как vb. Вместо xml используйте дословный строковый литерал (без cdata), добавляя строку с @ : var script = @"document.all('q').value =...." Он также поддерживает разрывы строк ( клавиша ввода). Для двойных кавычек вы должны выйти со второй двойной кавычкой @"there's a ""quote"" here"
  • 0
    @ pinkfloydx33 ваше решение избавилось от сообщений об ошибках, но теперь JavaScript не работает правильно
Теги:
compiler-errors

1 ответ

0
Лучший ответ

С# не имеет функции VB xml literal, поэтому вам нужно вызвать метод 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);

Ещё вопросы

Сообщество Overcoder
Наверх
Меню