Невозможно привести объект типа «Система».Строка для ввода «System.Int32». в параметрах маршрутизации Blazor/Razor

#razor #razor-pages #blazor-server-side #razorengine

Вопрос:

Я пытался вызвать страницу с /somepage/{Id}, где идентификатор [Parameter] -это свойство int, а маршрут вызывается как строка, он не должен неявно преобразовывать строку в int? почему это вообще не сработало бы? Я ожидаю, что он распознает параметр таким, какой он есть…

что я должен попробовать, чтобы промежуточное программное обеспечение маршрутизации распознало параметр ? даже в MVC это работает просто отлично…

маршрутизация страниц

 @page "/EditEmployee/{Id}"
 

ссылка

 <a href="/EditEmployee/@Employee.EmployeeId" class="btn btn-primary m-1">Edit</a>
 

параметр на странице

     [Parameter]
    public int Id { get; set; }
 

результатом является исключение, и страница не загружается

Комментарии:

1. Всегда включайте исключение с подробностями.

Ответ №1:

Сделай это

  @page "/EditEmployee/{Id:int}"
 

Комментарии:

1. В качестве комментария я сделал это динамичным, чтобы остановить исключения, потому что для этого требовалось преобразование int в строку, а затем в обратном направлении, поэтому я предположил, что int.Синтаксический анализ не сработал, и он вызвал исключение, но я также сделал то, что вы мне предложили