Member 12470237 Ответов: 1

Как перенаправить на другую страницу с помощью jquery с paramether


Я пишу индексную страницу, используя таблицу данных bootstrap и .net mvc, и я хочу, чтобы мой последний столбец был кнопкой перенаправления для получения сведений о заказе. Я заполнил datatable с помощью ajax/jquery и сделал кнопку в этом последнем столбце. Когда я нажимаю на него, ничего не происходит, и я получаю следующую ошибку: идентификатор начинается сразу после числового литерала.

Я ввел свой код ниже

$(document).ready(function ()
      {
          $('#ordersList').DataTable({
              "ajax": {
              "type" : "GET" ,
              "url" : "@Url.Action("GetData","OrderManager")" ,
              "datatype" : "json"
              },
              "columns":
              [
              { "data" : "CreatedAt" },
              { "data" : "FirstName" },
              { "data" : "Surname" },
              { "data" : "Email" },
              { "data": "OrderStatus" },
              { "data": "Id" , "render" : function ( data ) {
                  return "<a class= 'btn btn-danger' onclick = Menage(" + data + ")> Menage</a>";
                  }}
              ]
          });
      });

  function Menage( id ) {
          var url = '@Url.Action("UpdateOrder", "OrderManager", new { id = "__id__" })';
          window.location.href = url.replace('__id__', id);
  }


Имя контроллера: OrderManagerController действие: UpdateOrder
public ActionResult GetData()
        {
            List<Order> data = orderService.GetOrderList();
            return Json( new { data=data}, JsonRequestBehavior.AllowGet);
        }

        public ActionResult UpdateOrder(string Id)
        {
            ViewBag.StatusList = new List<string>() {
                "Order Created",
                "Order Processed",
                "Order Shipped",
                "Order Complete"
            };
            Order order = orderService.GetOrder(Id);
            return View(order);
        }

        [HttpPost]
        public ActionResult UpdateOrder(Order UpdatedOrder, string Id)
        {
            Order order = orderService.GetOrder(Id);
            order.OrderStatus = UpdatedOrder.OrderStatus;
            orderService.UpdateOrder(order);
            return RedirectToAction("Index");
        }


Что я уже пробовал:

Заменять
return "<a class= 'btn btn-danger' onclick = Menage(" + data + ")> Menage</a>";
с
return "<a class= 'btn btn-danger' onclick = 'Menage(" + data + ")'> Menage</a>";
но ничего не случилось

F-ES Sitecore

Используйте консоль, чтобы узнать, на какой строке происходит ошибка, это должно помочь сузить круг поиска.

1 Ответов

Рейтинг:
6

Richard Deeming

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

{ 
    "data": "Id" , 
    "render" : function ( data ) {
        return '<a class="btn btn-danger" onclick="Menage(\'' + data + '\')">Menage</a>';
    }
}

NB: Я подозреваю, что вы собирались написать Управлять[^По крайней мере, на английском языке, Домашнее хозяйство[^] обычно не используется вообще, и никогда как глагол.


Member 12470237

Большое вам спасибо за помощь