javascript - 在 ASP.Net 应用程序中将 C# 内联变量传递给 Javascript 函数

标签 javascript c# asp.net

我在 ASP.Net 应用程序中有一个非常简单的按钮单击事件,它调用一个非常简单的 javascript 函数,将传递给该函数的文本字符串导出到 csv 文件。如果我向按钮传递一个像这样的原始字符串,按钮单击事件及其调用的函数将完美地工作:

<button onclick="download_csv('TEST')">Download CSV</button> 

但是,如果我像这样传递 C# 内联字符串变量,它就会中断。

<button onclick="download_csv(<%=csvExport%>)">Download CSV</button>

这是 JavaScript 函数。

function download_csv(x) {

var hiddenElement = document.createElement('a');
hiddenElement.href = 'data:text/csv;charset=utf-8,' + encodeURI(x);
hiddenElement.target = '_blank';
hiddenElement.download = 'pricing.csv';
hiddenElement.click();
}

csvExport 变量在 .aspx 文件后面的 .cs 文件中声明,并用简单的文本字符串填充;实际上,我现在已将其设置为“测试”以进行测试。我尝试过用单引号包裹 csvExport,但这似乎也不起作用。我一定错过了一些非常简单的东西。

最佳答案

it is filled with a simple string of text

字符串需要引号,无论是在 C# 还是 JavaScript 中。您的硬编码示例包含它们:

<button onclick="download_csv('TEST')">Download CSV</button>

但是你的动态示例没有:

<button onclick="download_csv(<%=csvExport%>)">Download CSV</button>

查看生成的页面源以查看值:

<button onclick="download_csv(Test)">Download CSV</button>

并且在浏览器的开发控制台中产生语法错误。 (这两者始终应该是您首先查看的地方。如果您不熟悉浏览器的开发工具,请在 Chrome 中按 F12。有大量的开发工作以及调试能力。)

I've tried wrapping csvExport with single quotes

您没有显示该尝试,但从该描述来看,您似乎尝试在服务器端代码中执行此操作。它只会输出字符串值 "csvExport" 但在 JavaScript 代码中如果没有引号,它会因同样的原因以同样的方式失败。

只需放回您的报价即可:

<button onclick="download_csv('<%=csvExport%>')">Download CSV</button>

关于javascript - 在 ASP.Net 应用程序中将 C# 内联变量传递给 Javascript 函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60198380/

相关文章:

javascript - 使用动态文本和输入进行字符串翻译

javascript - Chrome 扩展/Bootstrap native 函数未定义? (Javascript)

javascript - 删除动态生成的文本框

asp.net - 如何在中继器页眉或页脚中查找控件

C# 将泛型类作为参数传递给自定义方法

c# - IIS 进程 w3wp.exe 没有显示在任务管理器进程中?

javascript - nodejs 流可读卡在第一个可读对象

c# - .NET 非/通用列表存储在堆栈还是堆上?

c# - 我应该如何释放在 Rust 中分配的 C# byte[]?

c# - 如何将 UserControl 中的嵌套控件完全暴露给外部?