Я работаю над многостраничной формой оценки, в которой вопросы/ответы основаны на базе данных. В настоящее время я базовая система работает с Html.BeginForm через стандартный ASP.Net MVC.HOWTO: реализовать версию jQuery ASP.Net MVC «Сильно типизированные частичные представления»
На данный момент ключ для всей системы - это «сильно типизированные частичные виды». Когда вопрос/ответ считывается из базы данных, тип ответа определяет, какая производная модель создается и добавляется в коллекцию. Основной вид он выполняет итерацию через коллекцию и использует систему ASP.NET MVC с «сильно типизированными частичными представлениями», чтобы определить, какое представление отображает правильный тип ответа (переключатель, выпадающее меню или текстовое поле).
Я хотел бы изменить этот процесс из Html.BeginForm в Ajax.BeginForm. Проблема в том, что я не имею понятия о том, как реализовать динамическое создание вопроса/ответа в мире JavaScript/jQuery. Любые мысли и/или предложения?
Дополнительно:
Причина изменения является сложным в режиме реального времени пропуск шаблон (проверки), которая должна произойти. Некоторые вопросы вызывают пропуски. Пропущенные шаблоны определяют доступность и значения других вопросов. Когда пользователь изменяет вопрос, который запускает шаблон пропуска, все текущие ответы должны быть отправлены обратно на сервер, который будет запущен через механизм правил.
Одна из проблем заключается в том, что когда вход ASP.Net MVC установлен в режим только для чтения, его значение не отправляется обратно. Решение представляет собой скрытый ввод с текущим значением. Это скрытое значение должно управляться JavaScript как в случае изменения значения пользователем, так и с помощью механизма правил.
В целом, кажется, очень сложно управлять. Логичнее, что код ASP.Net MVC просто предоставляет JSON-модель, а jQuery просто создает формы в браузере, а затем вызывает либо действие сохранения, либо действие проверки пропусков, передавая ему модель JSON. Кажется, чтобы удалить один слой головной боли :)
Вот текущий код, чтобы генерировать динамическую форму:
@using (Html.BeginForm(new { mdsId = @Model.MdsId, sectionId = @Model.SectionId }))
{
<div class="SectionTitle">
<span>Section @Model.SectionName - @Model.SectionDescription</span>
<span style="float: right">@Html.CheckBoxFor(x => x.ShowUnansweredQuestions) Show only unaswered questions</span>
</div>
@Html.HiddenFor(x => x.PrevSectionId)
@Html.HiddenFor(x => x.NextSectionId)
for (var i = 0; i < Model.answers.Count(); i++)
{
@Html.EditorFor(m => m.answers[i]);
}
}
Хороший блог, но он просто добавляет html к концу того, что он уже там, и все еще использует традиционную почту. Моя ситуация немного сложнее, что я объясню в главном сообщении из-за пространства и форматирования в комментариях :) –
Он использует AJAX для получения разметки динамически добавленного элемента. –
Дарин, я понимаю, что он делает, но то, что я делаю, на самом деле более продвинуто, чем я первоначально опубликовал. Я просто добавил более подробную информацию о том, что я делаю точно. В общем, Стивен Сандерсон на правильном пути, мне просто нужно намного больше. Я полностью совместим с тем, чтобы там было гораздо лучшее решение, чем то, что я только что сформулировал в исходном вопросе. –