【发布时间】:2013-06-26 19:28:24
【问题描述】:
我有一个带有 KnockoutJS 绑定控件的 ASP.NET C# 网页:
<asp:TextBox runat="server" ID="txtOfferName" placeholder="Offer Name" data-bind="value: planName"></asp:TextBox>
和
planName: ko.observable("")
...在文档加载时设置。当 txtOfferName 应该以空白开始时,这一切都很好。现在,我想将 txtOfferName 的值设置为在 Page_Load 期间不为空的值。如果我只是这样做
txtOfferName.Text = "New Value";
它不会起作用,因为 ko.observable("") 一旦被绑定就会覆盖这个值。有没有办法绑定一个 observable 并让它默认为它绑定到的控件的初始值?我当然可以
ko.observable("New Value")
但是这些值来自数据库,因此在前端而不是后端设置它们要困难得多。最坏的情况,我可以序列化所有这些值,将它们放入隐藏字段并使用 KO 分配它们,但我想先检查一下是否有更简单的方法。
谢谢!
【问题讨论】:
-
您是否考虑过通过 AJAX 调用来获取数据,然后在返回的 JSON 上调用
ko.applyBindings,该 JSON 可以映射到您的视图模型? -
我可以将服务器端的数据 JSON 并放入隐藏字段中,以避免完全执行 AJAX。我只是想知道是否有类似 ko.observableDefaultValue() 的东西,所以原始值将从元素中获取,然后绑定到模型上。
标签: c# asp.net knockout.js