如何在ASP.NET和KnockoutJS中将ko.observable的默认值设置为控件本身的默认值
本文关键字:默认值 设置 控件 observable ko ASP NET 中将 KnockoutJS | 更新日期: 2023-09-27 18:20:25
我有一个带有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.obsobble(")将覆盖该值。有没有一种方法可以绑定一个可观察对象,并将其默认为绑定到的控件的初始值?我当然可以做
ko.observable("New Value")
但是这些值来自数据库,所以在前端而不是后端设置它们要困难得多。在最坏的情况下,我可以序列化所有这些值,将它们放入一个隐藏字段,并使用KO进行分配,但我想先检查一下,以防有更简单的方法。
谢谢!
<%@ Page ClientIDMode="Static" %>
<input type="hidden" runat="server" id="hdnOfferName" />
<asp:TextBox runat="server" ID="txtOfferName" placeholder="Offer Name" data-bind="value: planName"></asp:TextBox>
//code behind
hdnOfferName.Value = "New Value";
//javascript (this is $jquery, use document.getElementById() for javascript)
planName = ko.observable($("#hdnOfferName").val());
如何扩展敲除可观察性以从绑定读取默认值?
对于基本相同的问题,这个答案是你最好、最灵活的选择。当绑定初始化时,它将在可观察的中存储输入的当前值
我还没有在WebForms中使用KO,但我认为它在MVC中也是一样的。在ASP.NET MVC中,我在调用ko.applyBinding
之前设置默认值,如下所示。。。
<asp:TextBox runat="server" data-bind="value: planName"></asp:TextBox>
<script src="viewModel.js" />
<script type="text/javascript">
myViewModel.planName('<%=Stuff.planName%>');
ko.applyBinding(myViewModel);
</script>