asp.net MVC 5 Использование JavaScript AJAX для вызова функции контроллера - PullRequest
0 голосов
/ 10 сентября 2018

Я начал изучать шаблон .NET Framework MVC 5. Я прошел учебник Microsoft «Начало работы с кодом Entity Framework 6 Сначала с использованием MVC 5» и получил работающее приложение CRUD.

Одной из особенностей моего приложения является возможность перетаскивать объекты по экрану и сохранять позицию в SQL (на стороне сервера), поэтому позиция сохраняется. Я выясняю, где объект был удален в функции JavaScript, поэтому мне нужно сохранить позицию в SQL из этой функции JavaScript. У меня это работает, используя AJAX-вызов функции в моем контроллере:

 $.ajax({
        url: "/Asset/UpdatePosition",
        data: { 'ID': offset[2], 'left': event.clientX + parseInt(offset[0], 10), 'top': event.clientY + parseInt(offset[1], 10)},
        type: 'GET',
        success: function (result) {

        },
        error: function (result) {
            alert(result);
        }
    });


 public ActionResult UpdatePosition(int Id, int left, int top)
    {
        var theAsset = db.Assets.FirstOrDefault(x => x.ID == Id);
        theAsset.MapPositionLeft = left;
        theAsset.MapPositionTop = top;
        db.SaveChanges();
        return Json("success", JsonRequestBehavior.AllowGet);
    }

Мой вопрос: я могу сделать это, но должен I. Это похоже на взлом, и нет смысла изучать MVC, если я собираюсь начать разрушать архитектурный правила в первый день. Я знаю, что могу сохранить сторону клиента данных, но, скажем, мне нужна сторона сервера данных по какой-то причине. Есть ли «правильный» способ обновления данных на стороне сервера из JavaScript, или то, что я делаю, действительно звучит? Martin

Edit: Чтобы выяснить, почему я спрашиваю, я просто вызвал функцию UpdatePosition из моего представления, например: ASP.Net MVC: вызов метода из представления но один из комментариев указывает на то, что «Если вам нужно вызвать контроллер из View - вы делаете что-то не так. Время для рефакторинга». Так что я знаю, что такой подход был неправильным - но поскольку я новичок в MVC, я понятия не имею, лучше ли мой вызов ajax выше.

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