【发布时间】:2013-11-14 16:04:37
【问题描述】:
在这个简单的 CSS Knockout 绑定中
<tag data-bind="css: { 'class_1': condition1, 'class_2': condition2 }" />
我想将 class_1 和 class_2 移植到 C# 变量。这是我的第一次尝试:
<tag data-bind="css: { '@class1': condition1, '@class2': condition2 }" />
其他尝试导致我不得不声明一个包含绑定语句的单独变量。
string bind = string.Format("'{0}': condition1, '{1}': condition2", class1, class2)
<tag data-bind = "css: { @bind }" />
最后:
string bind = string.Format("css: {{ '{0}': condition1, '{1}': condition2 }}", class1, class2)
<tag data-bind = "@bind" />
这些都不会阻止页面的呈现,但前两个结果在 Visual Studio 中指示语法错误。 我想做这个绑定:
- 无需分离一个单独的变量
- Visual Studio 2012(和 搞砸代码崩溃)
有可能吗?
最后一个例子,唯一没有给出语法错误的例子,牺牲了代码的可读性,尤其是对于较大的语句。有没有其他看起来更像我的第一次尝试的选择? Knockout MVC 似乎有点过于侵入性:有没有类似的东西可以只解决这个问题?
【问题讨论】:
-
您打算使用 Knockout 更新 CSS 类还是静态的?
-
静态的。从客户端的角度来看,类的名称将是静态的。我想 razor 打印这些名字,他正在这样做,但不是没有搞砸 ide 环境。
-
既然你问我...我可以用 razor 将类名分配给一个 js 变量,然后只使用敲除。可能是一个解决方案...
-
我也在想,或者你可以改变你的 KO VM 以通过构造函数获取类并将它们分配给属性。
-
这可能是一个很好的解决方案! KO可以把js变量作为bind语句中的类名吗?
标签: asp.net-mvc visual-studio-2012 razor knockout.js