
[ Полезный рекламный блок ]
Попробуйте свои силы в игре, где ваши навыки программирования на C# станут решающим фактором. Переходите по ссылке 🔰.
В этой статье рассмотрим пример, как выполнить добавление пользователя из таблицы с помощью JavaScript, вместе с валидацией данных. Основной фундамент приложения: модель и репозиторий , контроллер и представление, а так же возможность удаления пользователей через JavaScript, были рассмотрен в этой статье, если не читали, начните с нее.
Вначале, изменим модель User, добавим соответствующие атрибуты валидации:
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | public class User     {         [Key]         public int Id { get; set; }         [Required(ErrorMessage = "Enter your name")]         [Display(Name = "Name")]         [MaxLength(50, ErrorMessage = "The maximum length of the name is 50 characters")]         public string Name { get; set; }         [Required(ErrorMessage = "Enter your phone")]         [Display(Name = "Phone")]         public string Phone { get; set; }         [Required(ErrorMessage = "Enter your birth date")]         [Display(Name = "Birth date")]         public DateTime BirthDate { get; set; } = DateTime.Now;     } | 
С помощью данных атрибутов мы осуществим клиентскую валидацию формы.
Теперь добавим в контроллер Home, следующее действие:
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | [Route("/create-user")]         [HttpPost]         public async Task<IActionResult> CreateUser(User user)         {             if (ModelState.IsValid)             {                 if (user is not null)                 {                     var currentUser = _users.AddUser(user);                     return await Task.FromResult(Json(currentUser));                 }                 else                 {                     return NotFound();                 }             }             else             {                 return View(user);             }         }  | 
Перейдем в папку Views / Shared / _ValidationScriptsPartial.cshtml и добавим вызов Jquery:
| 1 2 3 4 5 | @*Новый код*@ <script src="~/lib/jquery//dist/jquery.min.js"></script> @*Новый код конец*@ <script src="~/lib/jquery-validation/dist/jquery.validate.min.js"></script> <script src="~/lib/jquery-validation-unobtrusive/jquery.validate.unobtrusive.min.js"></script> | 
В папке Views / Shared, добавим частичное представление _CreateUserModal.cshtml, со следующим содержимым:
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 | @model User <div class="modal" id="createUserModal" tabindex="-1" role="dialog">     <div class="modal-dialog" role="document">         <div class="modal-content">             <div class="modal-header">                 <h5 class="modal-title">Adding a user</h5>             </div>             <form id="userForm">                 <div class="modal-body">                     <div class="form-group">                         <label asp-for="Name" class="form-label">Name</label>                         <input asp-for="Name" name="Name" class="form-control" />                         <span asp-validation-for="Name" class="text-danger"></span>                     </div>                     <div class="form-group">                         <label asp-for="Phone" class="form-label">Phone</label>                         <input asp-for="Phone" name="Phone" class="form-control" />                         <span asp-validation-for="Phone" class="text-danger"></span>                     </div>                     <div class="form-group">                         <label asp-for="BirthDate" class="form-label">BirthDate</label>                         <input asp-for="BirthDate" name="BirthDate" class="form-control" type="date" />                         <span asp-validation-for="BirthDate" class="text-danger"></span>                     </div>                 </div>                 <div class="modal-footer">                     @*Обязательно прописываем ID*@                     <button id="SendUser" class="btn btn-secondary">Save</button>                     <span id="CancelUser" class="btn btn-secondary">Cancel</span>                 </div>             </form>         </div>     </div> </div> @*Для валидации модели на клиенте*@ @await Html.PartialAsync("_ValidationScriptsPartial") | 
С помощью этого модального окна, мы можем добавлять пользователей
В представление Index.cshtml над таблицей добавим кнопку для добавления пользователя:
| 1 | <button class="btn btn-primary" onclick="createUser()">Create User</button> | 
И вызов частичного представления с формой:
| 1 | @await Html.PartialAsync("_CreateUserModal") | 
Для самой таблицы добавляем идентификатор:
| 1 | id="myTable" | 
С помощью него мы сможем получить таблицу и добавить в нее рядок с новым пользователем.
Внизу этой же страницы, разместим JavaScript код, для обработки открытия модального окна и отправки данных:
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 | function addRow(user) {                 var table = document.getElementById("myTable");                 var row = table.insertRow();                 //Устаналиваем собственный атрибут для рядка                 row.setAttribute('data-rowid', user.id);                 var cell1 = row.insertCell(0);                 var cell2 = row.insertCell(1);                 var cell3 = row.insertCell(2);                 var cell4 = row.insertCell(3);                 cell1.innerHTML = user.name;                 cell2.innerHTML = user.phone;                 //Преобразуем дату из строки                 cell3.innerHTML = new Date(user.birthDate).toLocaleDateString('ru-ru', {                     day: '2-digit',                     month: '2-digit',                     year: 'numeric',                 });                 cell4.innerHTML = `<button onclick=\"deleteUser('${user.id}')\" class=\"btn btn-sm btn-danger\">Remove</button>`;             }             //Вешаем обработчик на форму и ожидаем ее отправку             document.getElementById("userForm").addEventListener("submit", function (e) {                 e.preventDefault();                     // Отправка данных формы на сервер                     fetch("/create-user", {                         method: "POST",                         body: new FormData(e.target)                     })                     .then(response => response.json())                     .then(data => {                         //Обработка ответа в формате JSON                         //Получаем пользователя с ID и                         //добавляем его в таблицу                         addRow(data);                         //Закрываем модальное окно                         $('#createUserModal').modal('hide');                     })                     .catch(error => {                         console.error('Ошибка:', error);                     });                   });             async function createUser() { clearForm();                 $('#createUserModal').modal('show');                 const cancelUser = document.getElementById('CancelUser');                 //Если нажали нет, скрываем окно                 cancelUser.onclick = () => {                     $('#createUserModal').modal('hide');                 }             } | 
Не забудьте добавить функцию для очистки данных формы:
| 1 2 3 4 5 6 | function clearForm(){                 const form = document.forms["userForm"];                 form.elements["Name"].value = "";                 form.elements["Phone"].value = "";                 form.elements["BirthDate"].value = "";             } | 
Запустим приложение и попробуем добавить пользователя:

Я надеюсь, что вам понравилось читать эту статью, и она оказалась легкой для понимания. Пожалуйста, дайте мне знать, если у вас есть какие-либо комментарии или исправления.
Читайте первую часть статьи — «Удаление пользователя с подтверждением через JavaScript».
Так же вам может быть интересна предыдущая статья — Как вывести данные из базы в Asp.Net.
Вы хотите научится писать код на языке программирования C#?
Создавать различные информационные системы, состоящие из сайтов, мобильных клиентов, десктопных приложений, телеграмм-ботов и т.д.
Переходите к нам на страницу Dijix и ознакомьтесь с условиями обучения, мы специализируемся только на индивидуальных занятиях, как для начинающих, так и для более продвинутых программистов. Вы можете взять как одно занятие для проработки интересующего Вас вопроса, так и несколько, для более плотной работы. Благодаря личному кабинету, каждый студент повысит качество своего обучения, в вашем распоряжении:
- Доступ к пройденному материалу
- Тематические статьи
- Библиотека книг
- Онлайн тестирование
- Общение в закрытых группах
Живи в своем мире, программируй в нашем.


 Загрузка...
 Загрузка...







