将字符串变量传递给JavaScript函数

将字符串变量传递给JavaScript函数,javascript,c#,razor,Javascript,C#,Razor,我正在尝试将字符串值传递给button onclick事件 但是javascript函数不从变量x读取任何内容 <button class="btn btn-buy" onclick="myFunction(@item.ProductId.ToString())" style="@btnstyle"><h4>Add to Basket</h4></button> 添加到篮子中 如何将变量值传递给Java脚本参数 <script>

我正在尝试将字符串值传递给button onclick事件 但是javascript函数不从变量x读取任何内容

<button class="btn btn-buy" onclick="myFunction(@item.ProductId.ToString())" style="@btnstyle"><h4>Add to Basket</h4></button>
添加到篮子中
如何将变量值传递给Java脚本参数

   <script>
            function myFunction(x) {
                 alertify.prompt('Prompt Title', x, '1'
                    , function (evt, value)
                    {

                    }
                    , function () { 
                    alertify.error('Cancel') });
            }
        </script>

函数myFunction(x){
alertify.prompt('prompt Title',x,'1'
,函数(evt,值)
{
}
,函数(){
alertify.error('Cancel')});
}

看起来您只需要将值放在引号中,razor会将
@item.ProductId.ToString()
的值直接放在html中,但它不会放在引号中,因此当浏览器将其解释为javascript时,它会相当混乱

当您使用razor时,记住它是一个模板系统,输出一个文档,然后由浏览器解释,这是很有帮助的
@item.ProductId.ToString()
只需将一些文本放入该模板中即可。Javascript无法访问该变量,除非它是通过模板提供的。出于这个原因,它需要被一些东西包围,以使javascript将其视为字符串。实际上,这意味着在它周围加上引号,如
“@item.ProductId.ToString()”

例如:

函数myFunction(x){
console.log(x)
alertify.prompt('prompt Title',x',1',函数(evt,值){
},函数(){
alertify.error('Cancel')
});
}


添加到Basket
假设
@item.ProductId.ToString()
您试图调用JS的ToString()方法,那么您需要使用小写的t调用
.ToString
,而不是大写的
t

它不应该是
myFunction('@item.ProductId.ToString()')
,我指
@item.ProductId.ToString()的值)
应被引用?{“消息”:“未捕获引用错误:未定义测试”,@sansalk如果我不清楚的话,很抱歉。我的观点是,如果
test
不是字符串,它会抛出错误。在第一个示例中,您会注意到它是字符串,所以不会抛出。在您的代码中,razor会将文本放在
@item.ProductId.ToString()的位置
,但是因为它没有引号,javascript会尝试将它解释为一个变量,这几乎肯定是未定义的Hanks,Oliver你能给我们展示一个变量传递的工作示例吗?Nop使用的是
C
ToString()
方法。我不认为这是答案。啊哈,我不应该假设。:D