0
我有一个与淘汰赛2.3.0的asp.net页面。该页面包含一个依赖下拉列表。在example.js中,它首先列出这2个下拉列表。依赖列表正在工作。ASP.NET Knockout相关下拉列表无法获得选定的值时回发
但是,当我在前端选择了值时,当在服务器端单击按钮时,我无法获得选定值。所选值始终设置为默认值。
请帮忙!
<%@ Page Title="" Language="C#" MasterPageFile="~/Site1.Master" AutoEventWireup="true" CodeBehind="WebForm1.aspx.cs" EnableEventValidation="false" Inherits="WebApplication1.WebForm1" %>
<asp:Content ID="Content1" ContentPlaceHolderID="HeadContent" runat="server">
<script src="JS/knockout-2.3.0.js"></script>
</asp:Content>
<asp:Content ID="Content2" ContentPlaceHolderID="MainContent" runat="server">
<asp:ScriptManager ID="sm1" runat="server"></asp:ScriptManager>
<asp:DropDownList runat="server" ID="ddl1" data-bind="options: jobAreas, optionsCaption:'--Job Areas--', optionsText: 'jobAreaName', optionsValue: 'jobAreaID', value: selectedJobArea">
</asp:DropDownList>
<asp:DropDownList runat="server" ID="ddl2" data-bind="options: jobFunctions, optionsCaption:'--Job Function--', optionsText: 'jobFunctionName', optionsValue: 'jobFunctionID', value: selectedJobFunction, enable: jobFunctions().length">
</asp:DropDownList>
<asp:LinkButton ID="Button1" runat="server" Text="Next" OnClick="Test" />
</asp:Content>
<asp:Content ID="Content3" ContentPlaceHolderID="ScriptTags" runat="server">
<script src="JS/example.js"></script>
</asp:Content>
在example.js
function ViewModel(items) {
this.jobAreas = ko.observableArray(items);
this.selectedJobArea = ko.observable();
this.selectedJobFunction = ko.observable();
function getById(items, value) {
if(!value) {
return [];
}
var result = ko.utils.arrayFirst(items, function(item) {
return item.jobAreaID === value;
});
return result && result.JubfunctionItems || [];
}
this.jobFunctions = ko.computed(function(){
var items = this.jobAreas();
var id = this.selectedJobArea();
return getById(items, id);
}, this);
}
var items = [
{ jobAreaName: 'Ford', jobAreaID: 1, JubfunctionItems:
[
{ jobFunctionName: 'F-150', jobFunctionID: 1},
{ jobFunctionName: 'F-250', jobFunctionID: 2}
]
},
{ jobAreaName: 'Honda', jobAreaID: 2, JubfunctionItems:
[
{ jobFunctionName: 'Civic', jobFunctionID: 5},
{ jobFunctionName: 'Accord', jobFunctionID: 6}
]
}
];
var module = {};
module.viewModel = new ViewModel(items);
ko.applyBindings(module.viewModel);
感谢新。有可能获得文本,而不是编号? – WPENG
对于文本,我怕你得弄脏手......创建一个''并使用javascript来更新它的值,并使用所选的下拉文本。然后您可以从您的代码后面访问HiddenField值 –
Lowkey
再次感谢您。我发现如果我使用我可以在js中设置值并获取所选项目的ID和值。另外我可以在回帖中访问这些值。只是想知道为什么只有下拉列表项不被视为有效项目... –
WPENG