Ошибка при попытке перенаправления со страницы _Layout в ASP.NET Базовая MVC-бритва

#redirect #asp.net-core-mvc #razor-pages

#перенаправлять #asp.net-ядро-mvc #бритвенные страницы

Вопрос:

Я довольно новичок в .NET Core, работая над более старыми версиями .NET, такими как Windows forms. У меня на странице настроена панель навигации _Layout , которую я хочу использовать для перенаправления на другие страницы Razor.

Например, у меня есть Home страница ( index.cshtml ) в папке, вызванной Home из моей Views папки. Если я хочу выбрать опцию поиска клиентов на панели навигации, я использую событие onclick, которое вызывает функцию ниже.

 function SearchClick() {  window.location.href = "CustomerSearchView.cshtml";  return false; }  

Он CustomerSearchView находится в CustomerSearch папке под Home папкой в Views . Существует также a CustomerSearchController с кодом

 public IActionResult Index() {  return View(); }  

Если я попытаюсь добавить путь в браузер, например, https://localhost:7022/CustomerSearchView.cshtml я получу сообщение об ошибке

Эта страница локального хоста не может быть найдена — веб-страница для веб-адреса не найдена: https://localhost:7022/CustomerSearchView.cshtml

Я перепробовал все варианты, используя полный путь с Views/CustomerSearch и другими, но получил ту же ошибку.

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

Ответ №1:

попробуйте это

 function SearchClick() {  window.location.href = "/CustomerSearch/Index";  return false; }  

Ответ №2:

Я исправил проблему, исправив маршрутизацию и добавив следующий код в свою программу.cs

 app.MapControllerRoute(  name: "customersearch",  pattern: "{controller=CustomerSearchController}/{action=Index}/{id?}",  defaults: new { controller = "CustomerSearchController", action =  "Index" });  

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