Я исследовал различные недействительные посты обработки ссылок, но не нашел ничего полезного. Итак, что я делаю ниже, чтобы обработать эту нулевую ссылку (на данный момент это хакер, чтобы не показывать пользователям страницу с ошибкой), по сути, вернуть текущий идентификатор, если в моем контроллере редактирования нет следующей записи.
public async Task<IActionResult> Edit(int? id)
{
if (id == null)
{
return NotFound();
}
var myInClause = new string[] { "a", "c", "k" };
var myQueryResults = await _context.MyClass.FindAsync(id);
int? NextIdObject = (from i in _context.MyClass
where myInClause.Contains(i.RowType) && (i.Id > myclass.Id)
select new { i.Id }).DefaultIfEmpty().First().Id;
if (!NextIdObject.Equals(0))
{
ViewBag.nextID = NextIdObject;
}
else
{
ViewBag.nextID = id;
}
if (myQueryResults == null)
{
return NotFound();
}
return View(myQueryResults);
}
Я бы предпочел просто перенаправить на страницу индекса (если они попадают в эту ошибку, это означает, что они все равно работают через очередь, никакой следующей записи здесь никогда не будет). Или, может быть, просто оставьте код как есть и отобразите сообщение на кнопке, чтобы указать конец списка. Любые мысли здесь. Обратите внимание, что использование любого приращения +1 для идентификатора не работает для меня, так как мне не нужно, чтобы пользователь видел все записи идентификатора, только записи с / c / k, поэтому я привожу переменную myInclause. Если есть лучший способ использовать SQL sytanx "IN" для запросов Linq, я весь в ушах.