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

时间:2019-01-14 15:33:08

标签: javascript c# razor

我正在尝试将字符串值传递给按钮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>

2 个答案:

答案 0 :(得分:0)

好像您只需要将值放在引号中一样,razor会将@item.ProductId.ToString()的值直接放入html中,但不会放在引号中,因此当浏览器将其解释为javascript时会很困惑。

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

例如:

function myFunction(x) {
  console.log(x)
  alertify.prompt('Prompt Title', x, '1', function(evt, value) {

  }, function() {
    alertify.error('Cancel')
  });
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/alertify.js/0.5.0/alertify.min.js"></script>
<button class="btn btn-buy" onclick="myFunction('test')" style="@btnstyle"><h4>Add to Basket</h4></button>

在该示例中,如果'test'不在引号内,则它将是未定义的,因为它正在寻找一个名为test的变量:

function myFunction(x) {
  console.log(x)
  alertify.prompt('Prompt Title', x, '1', function(evt, value) {

  }, function() {
    alertify.error('Cancel')
  });
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/alertify.js/0.5.0/alertify.min.js"></script>
<button class="btn btn-buy" onclick="myFunction(test)" style="@btnstyle"><h4>Add to Basket</h4></button>

答案 1 :(得分:-2)

假设@item.ProductId.ToString()试图调用JS的toString()方法,那么您需要使用小写字母t(而不是大写字母.toString)调用T