我正在使用ko.observableArray([])绑定下拉列表。这里我在vm.selectedUser中捕获选定的值,这是一个ko.observable()。我想将此值分配给onchange事件中的隐藏字段@ Html.HiddenFor(m => m.UserName,new {id =“hiddenUser”})
$( “#hiddenUser”)VAL(vm.selectedUser);
请帮忙。 谢谢
答案 0 :(得分:0)
您可以订阅更改以执行此操作
vm.selectedUser.subscribe(function(newValue) {
$("#hiddenUser").val(newValue));
});
或者只是将隐藏字段绑定到您的observable,这也应该起作用
@Html.HiddenFor(m => m.UserName, new {id="hiddenUser",data_bind = "value: selectedUser" })
答案 1 :(得分:0)
你可以做一些事情like this DEMO(我用我自己的编码风格创造了我的小提琴,可能与你的不相符,道歉!)
假设,
var Users = ko.observableArray([]);//Your User List
var SelectedUser=ko.observable();//Your Dropdown selected Item, can be ID or Name.
您可以为下拉列表的更改事件编写/定义函数: -
function selectionChanged(data){
console.log(SelectedUser());
$('#hiddenUser').val(SelectedUser());//Displaying it in Textbox
$('#hiddenUser2').val(SelectedUser());//Saving it in hidden field
};
我的HTML标记如下: -
<select data-bind="options: Users, optionsText: 'Name', optionsValue: 'Id',value: SelectedUser,event: { change: selectionChanged }"></select>
<input type="text" id="hiddenUser"></input>
<input type="hidden" id="hiddenUser2"></input>
答案 2 :(得分:0)
不需要jQuery和订阅,只需将隐藏的输入直接绑定到selectedUser observable:
@Html.HiddenFor(m => m.UserName, new {id="hiddenUser", data_bind="value: selectedUser" })
请注意,它是“data_bind”而不是“data-bind”。在Razor中,破折号是无效的名称字符,但它会自动将下划线转换为破折号。
[这并不意味着这是一个广告,但这是我在视频中展示的一个项目,如果你有兴趣,可以在WintellectNOW dot com上一起使用Knockout和MVC。]