如何使用Razor和Knockout进行数据绑定

如何使用Razor和Knockout进行数据绑定,razor,knockout.js,data-binding,Razor,Knockout.js,Data Binding,我试图用Razor设置一个敲除绑定函数的参数。我试过 <a href="#" data-bind="click: function() { return myFunc(@Type.SomeType.ToString()); }"> Click Me </a> 和 和 和 有没有正确的方法 (背景:这用于引导下拉列表)您可以尝试将数据绑定属性用单引号(')括起来,并使用Json.Encode传递参数 完整示例: @{ // A string

我试图用Razor设置一个敲除绑定函数的参数。我试过

<a href="#" data-bind="click: function() { return myFunc(@Type.SomeType.ToString()); }">
    Click Me
</a>




有没有正确的方法


(背景:这用于引导下拉列表)

您可以尝试将
数据绑定
属性用单引号(
'
)括起来,并使用
Json.Encode
传递参数

完整示例:

@{
    // A string with a lot of special characters
    string myStr = "abc\"\\/'#{}@.:xyz";
}

<span data-bind='click: function() { myFunc(@Json.Encode(myStr)); }'>
    Click Me
</span>

<script src="https://cdnjs.cloudflare.com/ajax/libs/knockout/3.3.0/knockout-debug.js"></script>
<script>
    ko.applyBindings({
        myFunc: function (myParam) {
            console.log(myParam);
        }
    });
</script>
@{
//包含许多特殊字符的字符串
字符串myStr=“abc\”\\/'\{}@.:xyz”;
}
点击我
ko.applyBindings({
myFunc:函数(myParam){
console.log(myParam);
}
});
在您的情况下,它将是:

<a href="#" data-bind='click: function() { return myFunc(@Json.Encode(Type.SomeType.ToString())); }'>
    Click Me
</a>


第三个代码段应该可以工作。错误是什么?每个撇号上的字符串常量未终止。它没有连接两个撇号。如果我交换撇号和引号,也会出现相同的错误。您是否尝试过
myFunc(@(Html.Raw(Type.SomeType.ToString()))
?这会产生同样的错误我认为使用Razor渲染脚本确实很难看,但这取决于您
<a href="#" data-bind="click: function() { return myFunc('@(Html.Raw(Type.SomeType.ToString()))'); }">
    Click Me
</a>
@{
    // A string with a lot of special characters
    string myStr = "abc\"\\/'#{}@.:xyz";
}

<span data-bind='click: function() { myFunc(@Json.Encode(myStr)); }'>
    Click Me
</span>

<script src="https://cdnjs.cloudflare.com/ajax/libs/knockout/3.3.0/knockout-debug.js"></script>
<script>
    ko.applyBindings({
        myFunc: function (myParam) {
            console.log(myParam);
        }
    });
</script>
<a href="#" data-bind='click: function() { return myFunc(@Json.Encode(Type.SomeType.ToString())); }'>
    Click Me
</a>