1 Вопрос: в этом коде, как сравнить Id, поступающий из URL-адреса с тем, что в базе данных, а затем показать данные для этого конкретного идентификатора

вопрос создан в Thu, May 2, 2019 12:00 AM

поэтому у меня есть этот код в контроллере для просмотра списка удовольствий конкретного сотрудника по его идентификатору

    public JsonResult GetVacatioinList(int? Id)
    {
        db.Configuration.ProxyCreationEnabled = false;
        List<Vacations> VList = db.Vacations.Include(c => c.VacationType).Select(x => new Vacations
        {

            EmployeesId = x.EmployeesId,
            Id = x.Id,
            VacationType = x.VacationType,
            StartDate = x.StartDate,
            EndDate = x.EndDate,
            Duration = x.Duration



        }).Where(x=> x.EmployeesId == Id).ToList();


        return Json(VList, JsonRequestBehavior.AllowGet);
    }

и эта кнопка покажет идентификатор конкретного сотрудника в URL

     <a  class='btn btn-warning' href='http://localhost:26868/Vacations/Index?id='" + EmployeesList[i].Id + "><span class='glyphicon glyphicon-list'></span></a>

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

Я попробовал это, и он показывает все каникулы, когда я не добавил условие where в операторе LINQ в контроллере, но там, где данные не отображаются это мой код jquery, который я использовал

    <script>

$("#LoadingStatus").html("Loading....");
$.get("/Vacations/GetVacatioinList", null, DataBind);

function DataBind(VacatioinList) {

    var SetData = $("#SetVacatioinList");
    for (var i = 0; i < VacatioinList.length; i++) {
        if (VacatioinList[i].EmployeesId = Id) {

            var dateforstart = new Date(parseInt(VacatioinList[i].StartDate.substr(6)));
            var startdate = "";
            startdate += dateforstart.format("mmm d, yyyy");

            var dateforend = new Date(parseInt(VacatioinList[i].EndDate.substr(6)));
            var enddate = "";
            enddate += dateforend.format("mmm d,yyyy");

            var Data = "<tr class='row_" + VacatioinList[i].Id + "'>" +
                "<td>" + VacatioinList[i].Id + "</td>" +
                "<td>" + VacatioinList[i].VacationType.Name + "</td>" +
                "<td>" + VacatioinList[i].Duration + "</td>" +
                "<td>" + startdate + "</td>" +

                "<td>" + enddate + "</td>" + "</tr>";

            SetData.append(Data);
            $("#LoadingStatus").html("");
        }
    }

}

р>

любая рекомендация о том, как это исправить или альтернативный способ реализации этого

    
0
1 ответ                              1                         

Если я вас правильно понял, то написанный вами код js:
http: //localhost: 26868 /Vacations /Index? id = someId
например: http: //localhost: 26868 /Vacations /Index? id = 55

если это так, то эта строка кода:

$.get("/Vacations/GetVacatioinList", null, DataBind);

вызывает действие "/Vacations /GetVacatioinList" без передачи параметра Id.
Ваше действие MVC получает 0 в качестве значения Id, поэтому результаты не возвращаются из вашей базы данных.

вам нужно:

  1. убедитесь, что у вас действительно есть значение id в строке запроса (Vacations /Index? id = someId)
  2. прочитайте это значение с помощью js (вы можете использовать эту вспомогательную функцию для ее получения)
  3. измените строку $get

    $.get("/Vacations/GetVacatioinList", { Id: getParameterByName('id') }, DataBind);
    

тогда вы можете удалить

if (VacatioinList[i].EmployeesId = Id) 

наконец, чтобы немного улучшить вызов db, переместите часть «Где» перед частью «Выбор»

 db.Vacations.Include(c => c.VacationType)
     .Where(x=> x.EmployeesId == Id)
     .Select(x => new Vacations
     {
            EmployeesId = x.EmployeesId,
            Id = x.Id,
            VacationType = x.VacationType,
            StartDate = x.StartDate,
            EndDate = x.EndDate,
            Duration = x.Duration
     })
     .ToList();
    
0
2019-05-03 02: 34: 41Z
источник размещен Вот