Нажатие кнопки работает локально, но не в производстве - PullRequest
1 голос
/ 05 июля 2019

Я выполнил шаги в потенциально дублирующем вопросе, и это не помогло решить мою ошибку.

При загрузке на сервер все приложение работает правильно, за исключением одной кнопки.

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

Когда я загружаю на сервер, всеостальное на сайте работает отлично.Однако эта одна кнопка выдает ошибку 404. При попытке найти действие контроллера.

Вот кнопка:

<input type="button" id="btnAdd" value="Add" class="btn btn-primary" />

Сценарий, который вызывает действие контроллера:

$(function () {
            $("#btnAdd").click(function () {
            //snipped for brevity

                //Send the records to server for saving to database.
                $.ajax({
                type: "POST",
                    url: "/Designees/InsertDesg",
                    data: '{FnameD: "' + txtFnameD.val() + '",LnameD: "' + txtLnameD.val() + '"}',
                    contentType: "application/json; charset=utf-8",
                    dataType: "json",
                    success:  function (r) {
                        $("#txtLandownerID").val(r.LandownerID);
                        $("#txtPermitNo").val(r.PermitNo);
                        $("#txtExpYear").val(r.ExpYear);
                    //Add the Name value to first cell.
                    SetValue(row, 2, txtFnameD);
                    SetValue(row, 3, txtLnameD);

                    //Add the row to the WebGrid.
                    webGrid.append(row);
                    window.location.href = r.Url;
                    }

                });



            });

Действие контроллера:

[HttpPost]
        public JsonResult InsertDesg(Designee designee)
        {
            designee.CreatedDate = System.DateTime.Now;
            designee.ModifiedDate = System.DateTime.Now;
            var user = context.Users.SingleOrDefault(u => u.BhCode == User.Identity.Name);
            designee.EnteredBy = user.Id;
            db.Designees.Add(designee);
            db.SaveChanges();
            var redirectUrl = new UrlHelper(Request.RequestContext).Action("Index", "Designees", new { id = designee.LandownerID, permit = designee.PermitNo, year = designee.ExpYear });
            return Json(new { Url = redirectUrl, designee });
        }

Мои локальные результаты: enter image description here enter image description here

Результаты моего сервера:enter image description here

Я ожидаю, что на сервере произойдет то же самое, что и в моей локальной системе.Кто-нибудь может придумать решение?Мои журналы IIS не показывают ничего, кроме ошибки 404.

РЕШЕНИЕ

Я понятия не имею, почему это исправило это, но я изменил свой вызов функции из приведенного вышек ниже, и теперь он работает правильно:

 var RootUrl = '@Url.Content("~/")';

                //Send the records to server for saving to database.
                $.ajax({
                type: "POST",
                    url: RootUrl + "Designees/InsertDesg",

Ответы [ 2 ]

1 голос
/ 05 июля 2019

Другим решением будет создание URL-ссылки ajax с использованием Url.Action().

$(function () {
        $("#btnAdd").click(function () {
        //snipped for brevity

            //Send the records to server for saving to database.
            $.ajax({
            type: "POST",
                url: "@Url.Action("InsertDesg", "Designees")",
                data: '{FnameD: "' + txtFnameD.val() + '",LnameD: "' + txtLnameD.val() + '"}',
                contentType: "application/json; charset=utf-8",
                dataType: "json",
                success:  function (r) {
                    $("#txtLandownerID").val(r.LandownerID);
                    $("#txtPermitNo").val(r.PermitNo);
                    $("#txtExpYear").val(r.ExpYear);
                //Add the Name value to first cell.
                SetValue(row, 2, txtFnameD);
                SetValue(row, 3, txtLnameD);

                //Add the row to the WebGrid.
                webGrid.append(row);
                window.location.href = r.Url;
            }

        });



    });

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

0 голосов
/ 05 июля 2019

Можете ли вы попробовать вставить этот код в ваше действие и посмотреть, работает ли он:

[HttpPost("Designees/InsertDesg", Order = 1)]
public JsonResult InsertDesg([FromBody]Designee designee)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...