Я новичок в MongoDB. Мое приложение представляет собой построитель динамических форм, который позволяет пользователям добавлять в форму динамические поля. Ни одно из полей в форме не является фиксированным или статическим. Пользователь может добавить в форму любое число и поля любого типа, такие как поля Textbox, Textarea, Dropdown, Checkbox, Radiobutton и т. д., и сохранить форму.
Теперь хотите сохранить созданные поля в базе данных. затем сохраненные формы будут использоваться для сбора данных от пользователей.
Как передать поля из представления в контроллер? и описать модель и контроллер для этого (для обработки полей)?
Я использую ASP.NET MVC в качестве интерфейса MongoDB в качестве сервера
Я нажимаю все поля здесь:
$('.field').each(function() {
var $this = $(this);
//field type
var fieldType = $this.data('type');
//field label
var fieldLabel = $this.find('.field-label').val();
//field required
var fieldReq = $this.hasClass('required') ? 1 : 0;
//check if this field has choices
if($this.find('.choices li').length >= 1) {
var choices = [];
$this.find('.choices li').each(function() {
var $thisChoice = $(this);
//choice label
var choiceLabel = $thisChoice.find('.choice-label').val();
//choice selected
var choiceSel = $thisChoice.hasClass('selected') ? 1 : 0;
choices.push({
label: choiceLabel,
sel: choiceSel
});
});
}
fields.push({
type: fieldType,
label: fieldLabel,
req: fieldReq,
choices: choices
});
});
Сохранение формы с динамическими полями:
var formArray=[];
formArray.push({ name: "formID", value: "formID" }, { name: "formFields", value: "fields" });
var formObject = JSON.stringify(formArray);
$.ajax({
method: "POST",
url:'@Url.Action("Index", "Home")',
data: formObject,
dataType: 'JSON',
success: function (data)
{
console.log(data);
$('.alert').removeClass('hide');
$("html, body").animate({ scrollTop: 0 }, "fast");
//Demo only
$('.alert textarea').val(JSON.stringify(fields));
}
});
Может ли кто-нибудь предложить модель и контроллер для этого?
Обновлять
Как предложил @stom, я сделал следующие исправления:
Модель
namespace Simple_jQuery_Form_Builder.Models
{
public class ControlsAttribute
{
public string id { get; set; }
public string value { get; set; }
public string name { get; set; }
}
public class FormControl:ControlsAttribute
{
public object textBox { get; set; }
public object textArea { get; set; }
public object checkBox { get; set; }
public object radioButton { get; set; }
public object agreeBox { get; set; }
public object selectBox { get; set; }
public object datePicker { get; set; }
}
public class Simple_jQuery_Form_Builder_Model
{
public List<FormControl> controls { get; set; }
public List<FormControl> formEditor { get;set; }
}
}
Просмотреть
<form method="post" action="~/Controllers/Home/Index">
<div id="sjfb" novalidate>
<div id="form-fields">
@using (Html.BeginForm("Index", "Home", FormMethod.Post))
{
@Html.DisplayFor(model => model.controls);
@Html.DisplayFor(model => model.formEditor);
}
</div>
<button type="submit" class="submit">Save Form</button>
</div>
</form>
Контроллер
[HttpPost]
public ActionResult Index(Simple_jQuery_Form_Builder_Model model)
{
if (model != null)
return Json("success");
else
return Json("An error has occured");
}
Предполагается, что сохраненная форма будет отображаться в нужной ссылке/div. Он показывает сообщение «успех». Теперь я должен показать созданную форму в другом представлении (например, в предварительном просмотре).
string Name
иstring Value
, а в методе POST будетpublic ActionResult(IEnumerable<yourModel> model)
. Вам также необходимо установитьcontentType: 'application/json'
для привязки к модели. - person   schedule 23.03.2018@Html.DisplayFor
не позволит отправлять значения в метод действия, вместо этого используйте@Html.HiddenFor
, существует много кода для предоставления решения, что сейчас невозможно. Совет Вам изучитьMVC
иJquery
основы из здесь и идти дальше. Также, пожалуйста, отформатируйте свое редактирование правильно, чтобы его могли прочитать другие. - person Shaiju T   schedule 23.03.2018