Мой javascript не будет возвращать значение модели, предотвращая когда-либо необходимое значение для достижения функции контроллера - PullRequest
0 голосов
/ 25 сентября 2019

У меня есть код, который создает программу для рассылки списка рассылки нескольким получателям.У меня есть два разных представления с динамическими таблицами как часть программы.Один предназначен для получателей списка рассылки, а другой - для выбора между различными проектами.Таблица рассылки работает так, как и должна.У меня есть таблица с получателями, которые хранятся в базе данных, поэтому они находятся там при инициализации, и у основания таблицы есть несколько текстовых полей, а также кнопка добавления и кнопка сохранения в самом низу.Всякий раз, когда я нажимаю кнопку добавления, я просто добавляю получателя в таблицу, но всякий раз, когда я нажимаю кнопку сохранения, таблица не должна меняться, но база данных обновляется на основе новых записей в текстовых полях.Это достигается с помощью javascript для получения значений из текстовых записей и установки их значений в моей модели.Это значение затем извлекается из модели контроллером.Моя проблема в таблице списка проектов, когда я нажимаю сохранить, javascript не устанавливает значение, которое он получает из текстовых полей, к значению модели.Все, что я сделал, это скопировал / вставил html и js-код из списка рассылки в новое представление для списка проектов, затем изменил переменные.

Я построчно прошел по коду, чтобы увидеть, что проблемапроисходит, когда функция $ ("# paths"). val (pathList);называется.Я не назначаю значение pathList для # paths.

HTML-код для списка рассылки, которому присваиваются значения модели:

`

<div class="col-md-9">
        <div class="well-lg bordered" style="max-width:600px;">
            <div style="max-width:500px; margin-right:auto; margin-left:auto;">
                <form method="post" role="form">
                    <input asp-for="Names" id="names" type="hidden" value="" />
                    <input asp-for="Emails" id="emails" type="hidden" value="" />
                    <div class="form-group">
                        <class ="row">
                            <class ="column"><label>Mailing List</label>
                            <class ="column" ></class><a href="https://localhost:44355/Home/Release"><font color="#1974D2">Back</font></a>
                        <div class="table-responsive bg-white">
                            <table class="table bordered" id="dynamic-table">
                                <thead>
                                    <tr class="bg-clubcar">
                                        <th width="35%">Name</th>
                                        <th width="45%">Email</th>
                                        <th width="20%">Edit</th>

`

Код JAVASCRIPT для списка рассылки:

`

$(function () {
        $("#butSubmit").click(function () {
            var nameList = [];
            var emailList = [];

            $("#dynamic-table tr:not(:first, :last)").each(function () {
                var tdlist = $(this).find("td");
                var name = $(tdlist[0]).html();
                var email = $(tdlist[1]).html();
                nameList.push(name);
                emailList.push(email);
            });
            $("#names").val(nameList);
            $("#emails").val(emailList);
        });
    });

`

HTML-код для списка проектов, где СЛЕДУЕТ присваивать значения модели:

`

<div class="col-md-9">
        <div class="well-lg bordered" style="max-width:1000px;">
            <div style="max-width:900px; margin-right:auto; margin-left:auto;">
                <form method="post" role="form" >
                    <input asp-for="ProjectNames" id="projectNames" type="hidden" value="" />
                    <input asp-for="Paths" id="paths" type="hidden" value="" />
                    <div class="form-group">
                        <class ="row">
                            <class ="column"><label>Project List</label>
                                <class ="column"></class><a href="https://localhost:44355/Home/Release"><font color="#1974D2">Back</font></a>
                                <div class="table-responsive bg-white">
                                    <table class="table bordered" id="dynamic-table2">
                                        <thead>
                                            <tr class="bg-clubcar">
                                                <th width="35%">Project Name</th>
                                                <th width="55%">File Pathways</th>
                                                <th width="10%">Edit/Delete</th>
                                            </tr>

`

Код JAVASCRIPT для списка проектов:

 `

$(function () {
        $("#butSubmit1").click(function () {
            var projnameList = [];
            var pathList = [];

            $("#dynamic-table2 tr:not(:lt(2), :last)").each(function () {
                var tdlist = $(this).find("td");
                var projname = $(tdlist[0]).html();
                var path = $(tdlist[1]).html();
                projnameList.push(projname);
                pathList.push(path);
            });
            $("#projectnames").val(projnameList);
            $("#paths").val(pathList);
        });
    });

`

Я должен получить значение, состоящее из списка всех путей, установленных в id = "пути ", который устанавливает значение для моей модели" Пути ".«Пути» всегда пустые после запуска Javascript.

1 Ответ

0 голосов
/ 26 сентября 2019

Мне удалось получить JavaScript, чтобы назначить значение.Очевидно, значения были установлены для модели, но ActionResult, которая использовала эту модель, не была вызвана кнопкой «Отправить».Вместо этого он перейдет к ActionResult, который контролировал весь вид, который не был связан с моделью.Чтобы решить эту проблему, я вставил [ActionName("proj")] над ActionResult, который был связан с моделью.

[ActionName("proj")]
    [HttpPost]
    public IActionResult Projects(ReleaseViewModel model)
    {
        UpdateProjectList(model.Paths);
        StatusMessage = "Successfully updated the project list";
        return RedirectToAction(nameof(Projects));
    }

Затем я установил значение asp-action="proj" для моей кнопки отправки, чтобы она перенаправляла вывод JavaScript, связанный с этой кнопкой, на правильный ActionResult

<button type="submit" id="butSubmit1" class="btn btn-block btn-cc" asp-action="proj" >Save</button>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...