Как создать сетку в ASP.NET Core MVC с помощью C#, в которую мы вставляем запись и сохраняем все данные в базу данных?

Я хочу создать сетку или таблицу, которая принимает несколько данных, как мы это делаем в веб-формах ASP.NET.

Появится форма с полями Name, FName, Class и Gender и текстовым полем, включая кнопку «Добавить» в конце формы для добавления данных в таблицу/сетку.

Сетка/таблица будет иметь столбцы с теми же именами, что и имена полей. Сетка/таблица будет находиться под формой, а под таблицей/сеткой будет кнопка «Сохранить». Когда я нажимаю кнопку «Сохранить», данные в таблице/сетке должны быть сохранены в базе данных.

Я хочу попробовать это в ASP.NET Core MVC, используя С# с SQL Server на его бэкэнде.

Я ожидаю, что данные формы должны быть добавлены в table/grid, а затем я смогу сохранить данные в сетке/таблице в базе данных, нажав кнопку «Сохранить».

Ребята, у вас есть предложения по этому поводу?

Вы пробовали это сами ..? С какими проблемами вы сталкиваетесь, чтобы сделать это.?

SUNIL DHAPPADHULE 28.05.2019 15:32

Я пытался создать его, но потерпел неудачу, так как я новичок в этом. Я не рассматривал JQuery и Javascript.

Abdul Basit 28.05.2019 15:38
google.com/… почему вы не можете найти его и узнать по этой ссылке. Таких примеров в инете очень много.
Samaritan_Learner 28.05.2019 15:40

@AbdulBasit, можете ли вы показать нам код, который вы пробовали. Пожалуйста, проверьте эту ссылку hackernoon.com/…

SUNIL DHAPPADHULE 28.05.2019 15:43

@RajeshB Я искал это везде. Я использовал примеры CRUD, но это другое. В этом вопросе я упомянул о создании таблицы/сетки, в которую пользователи могут вводить данные, такие как 10 строк, и нажимая кнопку «Сохранить». Данные должны быть сохранены в базе данных.

Abdul Basit 28.05.2019 15:45

DataTables.net — хороший вариант

Jonathan Alfaro 28.05.2019 15:46
forums.asp.net/t/…stackoverflow.com/questions/53452180/… попробуйте это.
Samaritan_Learner 28.05.2019 16:15
Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
0
7
3 260
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ответ принят как подходящий

Вы можете попробовать использовать JQuery, чтобы получить список добавленных данных и отправить их в контроллер.

Вот простая демонстрация:

Модель StudentInfo и StudentViewModel

public class StudentInfo
{
    public int Id { get; set; }
    public string Name { get; set; }
    public string FName { get; set; }
    public string Class { get; set; }
    public string Gender { get; set; }
}

public class StudentViewModel
{
    public  List<StudentInfo> StudentInfos { get; set; }
}

Контроллер

 [HttpPost]
    public async Task<IActionResult> InsertStudents([FromBody]StudentViewModel studentVM)
    {
        List<StudentInfo> model = studentVM.StudentInfos;
        _context.AddRange(model);
        int insertedRecords=await _context.SaveChangesAsync();
        return Json(insertedRecords);

    }

Вид

<table id = "tblStudents" class = "table" cellpadding = "0" cellspacing = "0">
<thead>
    <tr>
        <th style = "width:150px">Name</th>
        <th style = "width:150px">FName</th>
        <th style = "width:150px">Class</th>
        <th style = "width:150px">Gender</th>
        <th></th>
    </tr>
</thead>
<tbody>   
</tbody>
<tfoot>
    <tr>
        <td><input type = "text" id = "txtName" /></td>
        <td><input type = "text" id = "txtFName" /></td>
        <td><input type = "text" id = "txtClass" /></td>
        <td><input type = "text" id = "txtGender" /></td>
        <td><input type = "button" id = "btnAdd" value = "Add" /></td>
    </tr>
</tfoot>
</table>
<br />
<input type = "button" id = "btnSave" value = "Save All" />

JavaScript

@section Scripts
{
<script type = "text/javascript">
$("body").on("click", "#btnAdd", function () {
    //Reference the Name and Country TextBoxes.
    var txtName = $("#txtName");
    var txtFName = $("#txtFName");
    var txtClass = $("#txtClass");
    var txtGender = $("#txtGender");

    //Get the reference of the Table's TBODY element.
    var tBody = $("#tblStudents > TBODY")[0];

    //Add Row.
    var row = tBody.insertRow(-1);

    //Add Name cell.
    var cell = $(row.insertCell(-1));
    cell.html(txtName.val());
    //Add FName cell.
    cell = $(row.insertCell(-1));
    cell.html(txtFName.val());
    //Add Class cell.
    cell = $(row.insertCell(-1));
    cell.html(txtClass.val());
    //Add Gender cell.
    cell = $(row.insertCell(-1));
    cell.html(txtGender.val());

    //Clear the TextBoxes.
    txtName.val("");
    txtFName.val("");
    txtClass.val("");
    txtGender.val("");
});


$("body").on("click", "#btnSave", function () {
    //Loop through the Table rows and build a JSON array.
    var students = new Array();
    $("#tblStudents TBODY TR").each(function () {
        var row = $(this);
        var student = {};
        student.Name = row.find("TD").eq(0).html();
        student.FName = row.find("TD").eq(1).html();
        student.Class = row.find("TD").eq(2).html();
        student.Gender = row.find("TD").eq(3).html();
        students.push(student);
    });

    //Populate invoice data
    var studentVM = {};
    studentVM.StudentInfos = students;

    //Send the JSON array to Controller using AJAX.
    $.ajax({
        type: "POST",
        url: "/StudentInfoes/InsertStudents",
        data: JSON.stringify(studentVM),
        contentType: "application/json; charset=utf-8",
        dataType: "json",
        success: function (r) {
            alert(r + " record(s) inserted.");
        }
    });
});
</script>
}

Я применил весь код и добавил кнопку «Сохранить», но нажатие кнопки «Сохранить» не выполняет никаких действий.

Abdul Basit 29.05.2019 23:21

Вы использовали инструмент разработчика браузера, чтобы проверить, есть ли ошибка при нажатии кнопки «Сохранить», и проверить правильность URL-адреса в ajax? Я разместил весь код представления, пожалуйста, проверьте!

Xueli Chen 30.05.2019 03:52

Можете ли вы отправить мне файлы проекта? Да, я проверил инструмент разработчика в Chrome, но контроллер не был вызван.

Abdul Basit 20.07.2019 10:52

Я загрузил тот же проект на GitHub github.com/basit-chachar/MyProjects/tree/master/…, вы можете проверить его и, пожалуйста, дайте мне знать, если я что-то упустил.

Abdul Basit 20.07.2019 17:46

Вы можете попробовать использовать другой компонент, я рекомендую сетку MVC6 http://mvc6-grid.azurewebsites.net/

в основном он использует почти такой же синтаксис, поэтому в ваш текущий код будут внесены незначительные изменения, пожалуйста, проверьте приведенный ниже пример кода.

@model IEnumerable<PersonModel>

@(Html
.Grid(Model)
.Build(columns =>
{
columns.Add(model => model.Name).Titled("Name");
columns.Add(model => model.Surname).Titled("Surname");

columns.Add(model => model.Age).Titled("Age");
columns.Add(model => model.Birthday).Titled("Birth date");
columns.Add(model => model.IsWorking).Titled("Employed");

//popup part
columns.Add(model => $"<a  data-modal='' data-id=\"{model.Id}\"     href='PasswordRestUser/{model.Id}'      id=\"ss\"  asp-    action=\"PR\" asp-route-id=\"@item.Id\" class=\"btn     btn-info\" '> PR <span class='glyphicon      glyphicon-user'> </span> </a>").Encoded(false);

})
.Filterable()
.Sortable()
.Pageable()
)

<div id='myModal' class='modal fade in'>
    <div class = "modal-dialog">
        <div class = "modal-content">
            <div id='myModalContent'></div>
        </div>
    </div>
</div>

у него также есть много других функций, которые упростят работу с .netcore.

кто реализовать rowspan здесь?

solidfox 24.07.2021 15:04

Другие вопросы по теме