Как решить неопределенные стоимости объекта при возврате результатов в формате JSON?
Привет Команда
Я пытаюсь создать фильтр поиска, поэтому каждый раз, когда я пытаюсь найти это значение с помощью int, он создает строковый нулевой формат, указывающий неправильный строковый формат. Как мне решить эту проблему, моя логика ниже?
Что я уже пробовал:
<pre> //GET: SearchPeople-ID. public ActionResult SearchPeopleDetails() { RegCoursesViewModel regCoursesView = new RegCoursesViewModel(); return View(cb.RegPeopleLists.ToList()); } // GET://Passing-Data-Back as Json. public JsonResult GetSearchingData(string SearchBy, string SearchValue) { List<eNtsaRegPeopleLists> regPeopleLists = new List<eNtsaRegPeopleLists>(); if(SearchBy == "ID") { try { int Id = Convert.ToInt32(SearchValue); regPeopleLists = cb.RegPeopleLists.Where(v => v.LoginID == Id || SearchValue == null).ToList(); }catch(FormatException) { Console.WriteLine("{0} Is Not A ID ", SearchValue); }return Json(regPeopleLists, JsonRequestBehavior.AllowGet); } else { regPeopleLists = cb.RegPeopleLists.Where(v => v.Name.StartsWith(SearchValue) || SearchValue == null).ToList(); return Json(regPeopleLists, JsonRequestBehavior.AllowGet); } }
@model IEnumerable<eNtsaRegistrationTraining.Models.eNtsaRegPeopleLists> <br /> <br /> <div class="form-group row float-right"> <form class="form-group ml-lg-auto"> <div class="input-group input-group-sm"> <input class="form-control form-control-navbar" type="search" placeholder="Search" aria-label="Search" id="SearchLv"> <div class="input-group-append"> <button class="btn btn-navbar" type="submit"> </button> </div> </div> </form> </div> <!--Select-ID--> <select id="SearchBy"> <option value="ID">LoginID</option> <option value="Name">Name</option> <option value="Roles">Roles</option> </select> <br /> <br /> <table class="table table-bordered"> <thead> <tr> <th>LoginID</th> <th>Name</th> <th>Roles</th> <th>SISID</th> <th>LastActivity</th> <th>TotalActivity</th> </tr> </thead> <!--Tbody here--> <tbody id="DataSearching"> @foreach(var Item in Model) { <tr> <td>@Item.LoginID</td> <td>@Item.Name</td> <td>@Item.Role</td> <td>@Item.SISID</td> <td>@Item.LastActivity</td> <td>@Item.TotalActivity</td> </tr> } </tbody> </table>
<!--Javascript functionality for filter search--> <script src="~/Scripts/jquery-3.4.1.min.js"></script> <script type="text/javascript"> $(document).ready(function () { $("#SearchLv").keyup(function () { var SearchBy = $("#SearchBy").val(); var SearchValue = $("#Search").val(); var SetData = $("#DataSearching"); SetData.html(""); debugger; $.ajax({ type: "post", url: "/Home/GetSearchingData?SearchBy=" + SearchBy + "&SearchValue=" + SearchValue, contentType: "html", success: function (result) { if (result.length == 0) { SetData.append('<tr style="color:red"><td colspan="3">No Match Data</td></tr>') } else { $.each(result, function (index, value) { var Data = "<tr>" + "<td>" + value.LoginID + "</td>" + "<td>" + value.Name + "</td>" + "<td>" + value.Role + "</td>" + "<td>" + value.SIS_ID + "</td>" + "<td>" + value.LastActivity + "</td"> + "<td>" + value.TotalActivity + "</td>" "</tr>"; SetData.append(Data); }); } } }); }); }); </script>
F-ES Sitecore
Поместите точку останова внутри метода GetSearchingData, каково значение SearchBy и SearchValue?
gcogco10
SearchBy=ID, SearchValue="undefined"
F-ES Sitecore
$("#Search") не будет находить элемент, который имеет свойство "value". Вы не опубликовали соответствующий бит представления, который выводит элемент "поиск", поэтому трудно сказать, почему это так, но это то, что вам нужно посмотреть дальше.
gcogco10
@F-ES SiteCore я включил полный Html для большей ясности и понимания, возможно, я что-то пропустил по пути.
F-ES Sitecore
Там нет элемента "Поиск", вы имели в виду SearchLv?
var SearchValue = $("#SearchLv").val();
gcogco10
@Ф-Эс текущий момент я и поменял его на Варе SearchValue = $("#SearchLv").функция val(); но я все еще получаю тот же вопрос, вопрос каждый раз, когда я вставить через инт нет фильтр поиска найти ID из записи, но когда я использовать строковое значение, возникает исключение внутри метода GetSearchData на контроллере. "неверное значение формата строки".
F-ES Sitecore
Если это должно быть значение int, так как оно преобразуется.ToInt32. Если вы хотите изящно справляться с тем, когда люди используют не-ints, то используйте int.Попробуй вместо этого спарситься. Это вернет "false", если значение не может быть преобразовано в int, что облегчает отображение ошибки или по умолчанию другого значения, в зависимости от того, что вы хотите сделать.