【问题标题】:Mixing Razor and Knockout syntax in data binding在数据绑定中混合使用 Razor 和 Knockout 语法
【发布时间】:2017-07-20 00:20:33
【问题描述】:

我正在尝试像这样混合 ASP.NET MVC Razor 和 Knockout 语法:

<a data-bind="text: CityName, attr: { href: /search/ + 'CityName' + '/@CurrentCategory}">
</a>

其中CityName 是淘汰属性,@CurrentCategory 是 asp.net mvc 属性。

Visual Studio 给我一个关于语法的错误。
有可能这样做吗?

【问题讨论】:

  • 您能否澄清一下您期望的结果是什么 HTML?
  • 您需要提供有关错误的更多信息才能排除故障。可以将 razor 与任何客户端脚本混合使用,您只需要确保正确转义它即可。我使用的一种模式是@Html.Raw()。试一试,看看会发生什么。

标签: c# asp.net asp.net-mvc razor knockout.js


【解决方案1】:

改用这个:

<a data-bind="text: CityName, attr: { href: '/search/' + CityName + '/@CurrentCategory' }">
</a>

您需要用's 括住字符串的静态或文字部分,而不是变量或动态部分。

还要确保在 Razor 插入的任何片段中转义任何 's。上面可以重写以实现它:

<a data-bind="text: CityName, attr: { href: '/search/' + CityName + '/@CurrentCategory.Replace("'", "''")' }">
</a>

【讨论】:

    【解决方案2】:

    我们需要知道错误才能准确地帮助您 同时,您可以尝试使用计算的 observable,因此在您的淘汰赛控制器中创建:

    self.Url = ko.computed(function(){
       return '/search/' + self.CityName() + '/@CurrentCategory';
    });
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-12-28
      • 1970-01-01
      • 2014-08-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多