Я использовал этот учебник , чтобы создать экран, на котором пользователь может добавлять дополнительные поля ввода на заданном экране
Вместо использования всех текстовых полей Iv'e создал UIHint /Частичное представление, которое будет отображать мульти-выбранный виджет JQuery (я использую этот компонент )
ViewModel для каждого элемента строки
public class Micros
{
[UIHint("JsonComboBox")]
[AdditionalMetadata("id", "Lab_T_ID")]
[AdditionalMetadata("description", "Description")]
[AdditionalMetadata("action", "LabTestOptions")]
[AdditionalMetadata("controller", "Micro")]
[AdditionalMetadata("noneSelectedText", "Test")]
[AdditionalMetadata("comboboxWidth", "200")]
[DisplayName("Test")]
public Nullable<int> Lab_T_ID { get; set; }
[UIHint("JsonComboBox")]
[AdditionalMetadata("id", "Lab_SD_ID")]
[AdditionalMetadata("description", "Description")]
[AdditionalMetadata("action", "LabSampleDetailOptions")]
[AdditionalMetadata("controller", "Micro")]
[AdditionalMetadata("noneSelectedText", "Sample Details")]
[AdditionalMetadata("comboboxWidth", "300")]
[DisplayName("Sample Details")]
public Nullable<int> Lab_SD_ID { get; set; }
[DisplayName("Result")]
public string Result { get; set; }
}
Частичное представление / UIHint
@model int?
@{
var values = ViewData.ModelMetadata.AdditionalValues;
}
<select id="@values["id"]" multiple="multiple" style="width:@values["comboboxWidth"]px" > </select>
<script type="text/javascript">
$.getJSON('@Url.Action((string)values["action"], (string)values["controller"])',
null,
function (j) {
var options = '';
for (var i = 0; i < j.length; i++) {
options += '<option value="' + j[i].@values["id"] + '">' + j[i].@values["description"] + '</option>';
}
$('#@values["id"]').html(options);
$('#@values["id"] option:first').attr('selected', 'selected');
});
setTimeout(function () {
$("#@values["id"]").multiselect({
multiple: false,
header: "Select an option",
noneSelectedText: '@values["noneSelectedText"]',
selectedList: 1
});
}, 300);
</script>
Компоненты хорошо воспроизводятся при начальной загрузке страницы, но при добавлении элементов они добавляются ... но, похоже, javascript нене выполняются / не добавляются ..
Есть идеи?Все еще отлаживаю эту проблему, опубликую исправление, как только я его найду, но я надеюсь, что кто-то может указать мне правильное направление
Обновление
ПокаЯ обнаружил, что (похоже, что), UIHint / Partials вообще не отображается, когда пользователь нажимает, чтобы добавить другой элемент.(В противном случае выбор будет заполнен элементами, и будет применен виджет JQuery)