У меня есть первичная форма, определенная и хорошо продуманная, она делает то, что должна ...
@{ Html.BeginForm(); }
@Html.ValidationSummary(false)
@Html.AntiForgeryToken()
@Html.EditorFor(model => model)
<h2>Properties</h2>
<hr />
@* I want to put some stuff here... *@
<br class="space" />
<div class="clearfix">>
<button type="submit" data-bind="click: save">
Save
</button>
</div>
@{ Html.EndForm(); }
Теперь, тогда. К этой модели (или, скорее, ViewModel) прикреплен IList<PropertyViewModel>
.
A PropertyViewModel
имеет собственный набор проверок. Пока они довольно просты, но есть вероятность, что позже будет более сложное использование для этой установки.
Я использую KnockoutJS
для моей согласованности viewModel. Хотя я полагаю, это довольно неуместно. Я хочу отобразить вторую форму в jQuery UI Dialog
и вернуть результат, по существу ..
<script type="text/javascript">
var viewModel = {
name: ko.observable(),
description: ko.observable(),
properties: ko.observableArray(),
save: function () {
alert(ko.toJSON(viewModel));
},
includeProperty: function () {
$("#dialog").dialog({
width: 500,
closeText: '',
resizable: true,
buttons: {
'Submit': function () {
$(this).dialog('close');
callback( @* I want the new data to get sent back *@ );
},
'Cancel': function () {
$(this).dialog('close');
return false;
}
}
});
}
};
function callback(value) {
alert(ko.toJSON(value)); // (I will push the new property to the viewmodel here)
}
ko.applyBindings(viewModel);
</script>
Однако я не совсем уверен, как на самом деле вставить EditorTemplate
в диалог, более того, я не уверен, как извлечь из него данные.