在数据绑定中混合使用Razor和Knockout语法

时间:2017-02-28 21:08:15

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

我正在尝试将ASP.NET MVC Razor和Knockout语法混合在一起:

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

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

Visual Studio给出了关于语法的错误 有可能这样做吗?

2 个答案:

答案 0 :(得分:4)

请改用:

<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>

答案 1 :(得分:0)

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

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