Asp.net Web Forms and Knockout - Maintaining State

2019-07-26 16:44发布

问题:

I am trying to maintain state in my asp.net wizard that uses knockout with hidden fields. I am saving my textbox and DDL user selected value to hidden fields on the page. When the user traverses back to this webpage, I am using hidden fields to populate the controls back to previously selected values.

Problem : I am able to Populate UI textbox Fields(Control ID - BasicSwitchName) with previously selected values but not with any DDL Controls(Control ID - BasicSwitchManufacturer) except when I use an alert in between.

**Knockout **

var Hardware = function (name, manufacturerID)
{
    var self = this;
    self.name =  ko.observable(name);
    self.manufacturerID = ko.observable(manufacturerID);
}
self.currentHardware = ko.observable(new Hardware(1));

Populating UI Controls

<input type="text" id="BasicSwitchName" data-bind="value: currentHardware().name" />
<select id="BasicSwitchManufacturer"  
     data-bind=" options: $root.allManufacturers, optionsText: 'name', 
     value: currentHardware().manufacturerID, optionsValue: 'manufacturerID', 
     optionsCaption: 'Select Manufacturer..'" >


**UI** and Populating Previously selected values.  
$(document).ready(function () {
  PopulateEnteredInfo(); 
  **//Alert that is making it work.** 
  alert('Please Ensure - Basic Hardware Functionality !!');
}

var PopulateEnteredInfo = function() 
{
  //Getting value of Hidden Field-hidName to populate KO.observable. 
  if ($("#hidName").val() != "Hidden Field")
        appViewModel.currentHardware().name($("#hidName").val());

 //Getting value of Hidden Field-hidManufacturerID to populate KO.observable. 
  if ($("#hidManufacturerID").val() != "Hidden Field")
  {
    var manufacturerID = $('#hidManufacturerID').val(); 
    appViewModel.currentHardware().manufacturerID(manufacturerID);
  }
}