淘汰js传递视图参议院

时间:2017-11-02 15:08:18

标签: asp.net-mvc razor knockout.js asp.net-core

我的mvc视图中有一个参数

@{
   var myparam = false;
}

我的按钮位于以下视图中:

 <input type="button" id="myButton" value="Click" class="btn btn-primary" 
  data-bind='enable: selectvalue() != ""' />

在我的按钮的数据绑定中我也想检查myparam。如下所示:

data-bind='enable: filterCategory() != "" && !myparam'

我该怎么做?

由于

更新如下:

如果我的参数如下:

@{
  var myparam = false;
}

我的JS:

<script>
    var myData= @Html.Raw(Json.Serialize(Model));
    myData.myParameter= "@myparam ";
</script>

我的淘汰赛:

  (function () {
    var viewModel = function (data) {
         var viemod= this;
         viemod.myParam= vmData.myParam
 }
}

如果我在上面的淘汰赛中使用这个myData,它会返回“False”(字符串) 而它应该是假的(布尔)

1 个答案:

答案 0 :(得分:1)

这不起作用,因为Razor运行服务器端。 myparamC#局部变量。所以,你不能在运行客户端的knockout绑定中使用它。

您可以创建一个javascript变量并分配如下值:

<script>
    var myparam = @Json.Encode(myparam);
</script>

如果您不想污染全局范围,请在viewModel中添加myparam属性。

var yourViewModel = function() {
    var self = this;
    self.myparam = @Json.Encode(myparam);
    self.filterCategory = ko.observable('');
}

更新后:

如前所述,它应该是

myData.myparam = @Json.Encode(myparam);

但是,由于您将.Serialize()整个模型,您可以将myparam分配给控制器本身的属性。