ドロップダウンリスト(剣道ドロップダウン)が使用するバインディングを完全なオブジェクトに設定しようとしています。私はノックアウト剣道を使用してバインドを達成していますが、剣道のものやノックアウト剣道のものは私の問題の要因ではないと思います.
たとえば、次のオブジェクトがあります
var model = {
"Client": null,
"Clients": [
{
"CompanyAccount": {
"RelationshipManager": {},
"CompanyAccountId": 1,
"Name": "My Company Name",
"PhoneNumber": "(555) 555-5555",
"Address": {
"State": {
"StateId": 6,
"Name": "New York",
"Abbreviation": "NY"
},
"AddressId": 1,
"Street1": "123 Any Street",
"Street2": null,
"City": "New York",
"StateId": 6,
"Zip": 12345
}
},
"ClientId": 1,
"Name": "New Client 1/30/2013",
"CompanyAccountId": 1,
"ContactName": null,
"Salutation": null,
"ClientAddress": null,
"OfficePhoneNumber": null,
"OfficePhoneExtension": null,
"MobilePhoneNumber": null,
"Email": null,
"TrackingState": 0
}
]
}
}
ノックアウト マッピング プラグインを使用して、すべてのものをオブザーバブルに変換します。
var viewModel = ko.mapping.fromJS(モデル); ko.applyBindings(viewModel);
私のhtmlバインディングは次のようになります
<select data-bind="kendoDropDownList: { dataTextField: 'Name', optionLabel: 'Select An Client...', dataValueField: 'ClientId', data: Clients, value: Client }"></select>
Client
しかし、次のようなデータでプロパティを設定したい
Client: {
"CompanyAccount": {
"RelationshipManager": {},
"CompanyAccountId": 1,
"Name": "My Company Name",
"PhoneNumber": "(555) 555-5555",
"Address": {
"State": {
"StateId": 6,
"Name": "New York",
"Abbreviation": "NY"
},
"AddressId": 1,
"Street1": "123 Any Street",
"Street2": null,
"City": "New York",
"StateId": 6,
"Zip": 12345
}
},
"ClientId": 1,
"Name": "New Client 1/30/2013",
"CompanyAccountId": 1,
"ContactName": null,
"Salutation": null,
"ClientAddress": null,
"OfficePhoneNumber": null,
"OfficePhoneExtension": null,
"MobilePhoneNumber": null,
"Email": null,
"TrackingState": 0
}
「1」や「New Client 1/30/2013」などのデータを使用してプロパティを設定する方法しかわかりません
*編集 Entity Frameworkの経験が不足しているため、これを設計しようとしています。外部キーと、クライアントに送信されるモデルの外部キーに関連付けられているオブジェクトがある場合。モデルではなく外部キーを更新すると、SaveChanges() を呼び出すときに、モデルで矛盾した状態の例外が発生します。私の最善のアプローチは、これらのオブジェクトなしで(ForeignKey IDのみを含む)ViewModelを作成することだと思います。