Когда я нажимаю кнопку отправки, он сначала вставляет значения NULL по умолчанию в первую строку, а в следующей строке будут значения, которые я вставил - PullRequest
1 голос
/ 18 июня 2020

Я новичок в MVC asp. net jquery ajax и надеюсь, что вы, ребята, поможете мне разобраться в моей проблеме. Большое спасибо, любой ответ был бы полезен.

Я просто делаю самоупражнение, которое я видел в какой-то онлайн-группе, чтобы помочь мне получить больше знаний о том, как реализовать jquery на asp. net mvc любой совет может помочь.

Controller
public JsonResult AddJob(jobdetail job)
        {
            using(jQueryAjaxEntities db = new jQueryAjaxEntities())
            {
                db.jobdetails.Add(job);
                db.SaveChanges();
                return Json("Success");
            }

        }

Вот мое представление AddJob Всякий раз, когда я удаляю скрипт sr c, он обычно сохраняется, может ли кто-нибудь объяснить мне, почему это похоже что?

  <script src="~/Scripts/jquery-3.4.1.min.js"></script>
<script>
    $(document).ready(function () {
        $("#btnSave").click(function () {
            var JobModel = {
                TaskName: $("Task_Name").val(),
                Description: $("Description").val(),
                DateStarted: $("Date_Started").val(),
                DateFinished: $("Date_Finished").val(),
                Status: $("Status").val()
            };
            $.ajax({
                type: "POST",
                url: "/Home/AddJob",
                dataType: "json",
                contentType: "application/json",
                data: JSON.stringify({ job: JobModel }),
                success: function (response) {
                    window.location.href = "/Home/Index"
                }
            });
        });
    });
</script>

@using (Html.BeginForm())
{
    @Html.AntiForgeryToken()

    <div class="form-horizontal">
        <hr />
        @Html.ValidationSummary(true, "", new { @class = "text-danger" })
        @Html.HiddenFor(model => model.JobID)

        <div class="form-group">
            @Html.LabelFor(model => model.Task_Name, htmlAttributes: new { @class = "control-label col-md-2" })
            <div class="col-md-10">
                @Html.EditorFor(model => model.Task_Name, new { htmlAttributes = new { @class = "form-control" } })
                @Html.ValidationMessageFor(model => model.Task_Name, "", new { @class = "text-danger" })
            </div>
        </div>

        <div class="form-group">
            @Html.LabelFor(model => model.Description, htmlAttributes: new { @class = "control-label col-md-2" })
            <div class="col-md-10">
                @Html.EditorFor(model => model.Description, new { htmlAttributes = new { @class = "form-control" } })
                @Html.ValidationMessageFor(model => model.Description, "", new { @class = "text-danger" })
            </div>
        </div>

        <div class="form-group">
            @Html.LabelFor(model => model.Date_Started, htmlAttributes: new { @class = "control-label col-md-2" })
            <div class="col-md-10">
                @Html.EditorFor(model => model.Date_Started, new { htmlAttributes = new { @class = "form-control", @type = "date" } })
                @Html.ValidationMessageFor(model => model.Date_Started, "", new { @class = "text-danger" })
            </div>
        </div>

        <div class="form-group">
            @Html.LabelFor(model => model.Date_Finished, htmlAttributes: new { @class = "control-label col-md-2" })
            <div class="col-md-10">
                @Html.EditorFor(model => model.Date_Finished, new { htmlAttributes = new { @class = "form-control", @type = "date" } })
                @Html.ValidationMessageFor(model => model.Date_Finished, "", new { @class = "text-danger" })
            </div>
        </div>

        <div class="form-group">
            @Html.LabelFor(model => model.Status, htmlAttributes: new { @class = "control-label col-md-2" })
            <div class="col-md-10">
                @Html.EditorFor(model => model.Status, new { htmlAttributes = new { @class = "form-control" } })
                @Html.ValidationMessageFor(model => model.Status, "", new { @class = "text-danger" })
            </div>
        </div>

        <div class="form-group" id="DivSave">
            <div class="col-md-offset-2 col-md-10">
                <input type="submit" value="Submit" id="btnSave" class="btn btn-default" />
            </div>
        </div>
    </div>
}


Ответы [ 2 ]

0 голосов
/ 18 июня 2020

Вы отправляете форму дважды.

1. @(Html.BeginForm()) Размещайте вызов, так как тип кнопки является отправкой. который работает нормально и вставляет правильные данные.

2. jQuery AJAX Post Call.

Отсутствует # для получения значений полей. Итак, он вставляет нулевые данные.

Код:

TaskName: $("Task_Name").val()

Это должно быть:

TaskName: $("#Task_Name").val()

Если вы внесли эти изменения, он вставит данные дважды.

Итак, вам нужно отправить форму только один раз.

Это можно сделать:

  1. Изменить тип кнопки на кнопку. Это позволит избежать поствызова формы begin.
  2. Удалить Jquery почтовый индекс.

Я предложу Удалите AJAX код вызова, опубликуйте форму, используя только отправку формы.

0 голосов
/ 18 июня 2020

Вероятно, вы дважды выполняете действие AddJob. Сначала нажимается кнопка btnSave, и с помощью события jquery вы публикуете свои данные с помощью ajax. Затем ваша форма также отправляет данные в ваше действие AddJob. И вставляется дублирующая запись.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...