Я начал изучать шаблон .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 выше.