Связывание «значение» первоначально устанавливает значение элемента в том, что находится в вашей модели просмотра, поэтому нет. Тем не менее, вы, вероятно, могли бы дублировать код для привязки «значение» в своем собственном обработчике, который первоначально задавал значения модели из значений элементов управления. Скачать debug version нокатирующим, и искать ko.bindingHandlers['value'] = {
на линии 2182. Копия этого заявления обязательного обработчика и изменения «значение» на что-то другое, а затем добавить вызов valueUpdateHandler() в конце INIT:
ko.bindingHandlers['myvalue'] = {
'init': function (element, valueAccessor, allBindingsAccessor) {
// skipping code
valueUpdateHandler(); // update model with control values
},
'update': function (element, valueAccessor) {
// skipping code
}
};
сейчас при использовании связывания MyValue, ваша модель будет обновляться с контрольными значениями, когда первоначально связаны:
<input type="text" data-bind="myvalue: name"></input>
в качестве альтернативы можно было бы назвать исходные значения вместо копирования весь код, а просто добавить код из valueUpdateHandler после init:
ko.bindingHandlers['myvalue'] = {
'init': function (element, valueAccessor, allBindingsAccessor) {
// call existing value init code
ko.bindingHandlers['value'].init(element, valueAccessor, allBindingsAccessor);
// valueUpdateHandler() code
var modelValue = valueAccessor();
var elementValue = ko.selectExtensions.readValue(element);
ko.jsonExpressionRewriting.writeValueToProperty(modelValue, allBindingsAccessor, 'value', elementValue, /* checkIfDifferent: */ true);
},
'update': function (element, valueAccessor) {
// call existing value update code
ko.bindingHandlers['value'].update(element, valueAccessor);
}
};
Если вы не хотите использовать AJAX, вы всегда можете получить значение в JavaScript с помощью сериализации модели как JSON (синтаксис бритвы):
<script type="text/javascript">
var model = @(new HtmlString(new System.Web.Script.Serialization.JavaScriptSerializer().Serialize(Model)));
</script>
последняя часть была точный ответ я искал. Это отлично. Конечно, немного стыдно включать это в мой прямой файл aspx, а затем ссылаться на него из внешнего JS-файла, но, тем не менее, это то, что я искал. Благодаря! –