#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" });
При добавлении любых новых представлений с контроллерами просто добавьте эквивалентный код маршрутизации для него, чтобы сделать его видимым для проекта.