Мне нужно сделать что-то, о чем легко говорить, но немного сложно реализовать: всякий раз, когда, на мой взгляд, выбирается Person Nature, нужно запускать событие, которое запускает обратную передачу, отправлять модель просмотра в действие Create, чтобы она была отредактирована , затем он возвращается в мое представление, и моя @Model обновляется с изменением новой модели просмотра. Мне нужно сделать это через JavaScript. Я уже написал несколько постов на эту тему, но никто не хочет мне помогать, поэтому я решил начать с нуля. Кто-нибудь знает, как мне помочь?
[HttpPost]
[Authorize(Policy = "CanWriteCustomerData")]
[Route("pessoa-gerenciamento/cadastrar-novo")]
[ValidateAntiForgeryToken]
public IActionResult Create(PessoaViewModel pessoaViewModel)
{
var pessoa = pessoaViewModel.Id = 1000;
return View(pessoa);
} public class PessoaViewModel
{
[DisplayName("Código")]
public int Id { get; set; }
[DisplayName("Natureza")]
[Required(ErrorMessage = "Escolha uma Natureza")]
public PessoaNatureza PessoaNatureza { get; set; }
}@using SistemaComercial.Domain.ValueObjects
@model SistemaComercial.Application.ViewModels.Pessoa.PessoaViewModel
@{
ViewData["Title"] = "Cadastrar Nova Pessoa";
}
<!-- begin snippet: js hide: false console: true babel: false -->@section Scripts {
@{await Html.RenderPartialAsync("_ValidationScriptsPartial");}
<script>
.....................Bloco JS
</script>
}
<form asp-controller = "Pessoa" asp-action = "Create">
<div class = "form-group">
<label asp-for = "PessoaNatureza" class = "col-md-2 control-label"></label>
<div class = "col-md-3">
<select id = "PessoaNatureza" asp-for = "PessoaNatureza" asp-
items = "Model.PessoasNaturezas" class = "form-control">
<option value = "" data-id = "@Model.PessoaNatureza.ObterIdEnum()">--SELECIONE--</option>
</select>
<span asp-validation-for = "PessoaNatureza" class = "text-danger"></span>
</div>
</div>
</form>Essa parte eu consigo fazer normalmente. Точность обратной передачи в ЕС после выбора элемента без DropDownList.
Если вы хотите отправить обратно в контроллер, когда выбран раскрывающийся список, вы, вероятно, захотите использовать AJAX. Вы можете получить данные своей модели со страницы, отправить их через AJAX на контроллер, а затем предпринять некоторые действия после завершения вызова AJAX.
Смотрите здесь: stackoverflow.com/questions/33947882/…
Спасибо за помощь. Я не знаю, были ли у вас другие рассуждения ... В рассматриваемом случае мне нужно, чтобы JS выполнял POST в ViewModel для действия Create. Там он будет отредактирован (var person = personViewModel.Id = 1000;). Я смог использовать Ajax, чтобы предоставить посту форму #frmCreate. Теперь действие можно применить к шаблону представления и отредактировать его.
Теперь давайте зададим вопрос: теперь Precision вернула шаблон Create view, так что он занял место текущего представления, как, например, я редактировал Id. Это то, что я не могу сделать. Это невозможно? Можно ли вернуть модель просмотра через Ajax? Как бы я это сделал?
$ (function () {$ ('# PessoaNatureza'). change (function () {var url = "@ Url.Action (" Create "," Pessoa ")"; var data = $ ('# frmCreate'). serialize (); $ .ajax ({type: "POST", url: '@ Url.Action ("Create", "Pessoa")', data: data}). done (function (res) {// $ ( "#frmCreate"). data (res);});});});



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Вам нужно либо использовать форму в вашем HTML и отправить форму из JS, либо использовать AJAX для отправки данных модели в контроллер.