У меня есть следующий класс:
public class ClinicaViewModel
{
public List<String> EmailProfissionais { get; set; }
public string Email { get; set; }
public string Fantasia { get; set; }
}
С соответствующим контроллером:
public ActionResult Create()
{
return View(new ClinicaViewModel());
}
[HttpPost]
[ValidateAntiForgeryToken]
public async Task<ActionResult> Create(ClinicaViewModel clinica)
{
if (ModelState.IsValid)
{
\\ Some code here
}
return View(clinica);
}
Представление генерирует в Javascript динамически сгенерированные поля до ранее неизвестного количества значений с этим кодом:
@using (Html.BeginForm())
{
@Html.AntiForgeryToken()
\\ Some code here...
<div class="form-group">
<div class="col-md-offset-2 col-md-10">
<input type="submit" value="Gravar" class="btn btn-primary" />
</div>
</div>
<p></p>
<div id="listaProfissionais"></div>
<p><br /></p>
<div class="form-group">
<div class="col-md-offset-2 col-md-10">
<button class="btn btn-success js-addProfissional">Adicionar profissional</button>
</div>
</div>
</div>
}
@section Scripts {
@Scripts.Render("~/bundles/jqueryval")
<script src="~/Scripts/cookies.js"></script>
<script>
$(document).ready(function () {
Cookies.set('6172D459-29BB-4874-B418-1D9AACEC095F', 0);
$(".js-addProfissional").click(function (event) {
let iteration = parseInt(Cookies.get('6172D459-29BB-4874-B418-1D9AACEC095F'));
iteration++;
Cookies.set('6172D459-29BB-4874-B418-1D9AACEC095F', iteration);
event.preventDefault();
addDom();
});
});
function addDom() {
let node = "<p></p>";
node += "<div class='input-group mb-3'>";
node += "<input class='form-control' placeholder='E-mail do usuário' name='Email";
node += Cookies.get('6172D459-29BB-4874-B418-1D9AACEC095F');
node += "' type='text' Id='Email";
node += Cookies.get('6172D459-29BB-4874-B418-1D9AACEC095F');
node += "'/> ";
node += "</div>";
$("#listaProfissionais").append(node);
};
</script>
}
Где cookies.js - библиотека для обработки куки ...
В примере, где 3 поля были сгенерированы, в следующем HTML-коде:
<div id="listaProfissionais">
<p></p>
<div class="input-group mb-3">
<input class="form-control valid" placeholder="E-mail do usuário" name="Email1" type="text" id="Email1" aria-invalid="false">
</div>
<p></p>
<div class="input-group mb-3">
<input class="form-control valid" placeholder="E-mail do usuário" name="Email2" type="text" id="Email2" aria-invalid="false">
</div>
<p></p>
<div class="input-group mb-3">
<input class="form-control valid" placeholder="E-mail do usuário" name="Email3" type="text" id="Email3" aria-invalid="false">
</div>
Чтобы в приведенном выше примере я получил 3 значения из 3 полей ввода, а в общем случае я должен получить столько, сколько сгенерировано.
Проблема в том, что, несмотря на определение класса public List<String> EmailProfissionais { get; set; }
, я получаю нулевой объект.
Как получить результаты всех полей ввода, которые создаются?