从包含 c# 变量的文件执行 JS 脚本

Exectuing JS script from file containing c# variables

我正在使用 CefSharp 创建一个软件,需要执行一些 JS 代码。我现在做的是只用一行写脚本,但是不方便,而且很难应用修改。

这是我尝试执行的文件中的 JS 脚本: console.log(size) //size.Text is the variable defined in C# 但是由于 size 变量是在 c# 中定义的,所以我得到的输出是 undefined.

这是我用来加载文件的代码:

string size = "XL";
string testJs = Path.Combine(Environment.CurrentDirectory, @"Data\", "test.js");
string test = File.ReadAllText(testJs);
browser.ExecuteScriptAsyncWhenPageLoaded(test);

还有一个可行的(单行的):

browser.ExecuteScriptAsyncWhenPageLoaded("console.log(" + size + ");")

所以主要问题是将变量传递给 XL 作为浏览器控制台的输出。

您要将视图模型传递给 Razor 模板吗?如果是这样,您可以在脚本标签中使用剃刀语法:

<script>
    console.log(@Model.size);
</script>

考虑到size是从C#代码传递过来的,js文件中需要的是一个占位符,以后可以替换。

一个可能的解决方案可能是 -

JS 文件

console.log('@{SIZE}@');// you can use any formatting for your placeholder

C#代码

string size = "XL";
string testJs = Path.Combine(Environment.CurrentDirectory, @"Data\", "test.js");
string test = File.ReadAllText(testJs).Replace("@{SIZE}@", size);
browser.ExecuteScriptAsyncWhenPageLoaded(test);

这种方法将允许您在 js 文件中使用任意数量的占位符以及任意数量的位置。