Приложение не находит страницу Razor, расположенную в другом проекте

#c# #asp.net-core #razor #razor-pages

#c# #asp.net-core #razor #страницы razor

Вопрос:

Я работаю над проектом Razor Pages. Это решение состоит из нескольких проектов, а именно «Server», который управляет службами для внедрения зависимостей и является проектом запуска. «Приложение», которое содержит индексную страницу и общие компоненты, а также несколько проектов «Module», которые являются независимыми областями сайта. Мне нужно добавить новый модуль к этому решению с целевой страницей. Я создал новый проект, установил все ссылки на другие проекты в solution и создал там страницу со строкой «@page » / moduleC»». Но если я запускаю решение и перехожу на эту страницу — оно показывает страницу 404. Та же конфигурация отлично работает с другими модулями. Требуются ли какие-то дополнительные действия, чтобы разрешить маршрутизацию между несколькими проектами?

Ответ №1:

https://digitteck.com/frontend/blazor/blazor-page-in-another-assembly/

Компонент Router отвечает за сопоставление страниц razor.

Вам нужно будет добавить другие сборки, используя параметр AdditionalAssemblies.

 <CascadingAuthenticationState>
    <Router AppAssembly="@typeof(Program).Assembly" AdditionalAssemblies="@_extraAssemblies">
        <Found Context="routeData">
           ...
        </Found>
        <NotFound>
            ...
        </NotFound>
    </Router>
</CascadingAuthenticationState>

@code{

    private List<System.Reflection.Assembly> _extraAssemblies = new List<System.Reflection.Assembly>()
    {
        typeof(OtherProject.SomeObjectInOtherProject).Assembly,
    };

}
  

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

1. В моем случае это было именно то, что мне было нужно.

Ответ №2:

Я предполагаю, что вы работаете над приложением Blozor. Если мое предположение верно, пожалуйста, импортируйте ссылку внутри _Import.razor в вашем Balzor.WebAssembly или Balzor.Серверный проект.

Пример

@используя <—ProjectName—>.ComponentsLibrary
@используя <—ProjectName—>.Библиотека компонентов.<—ИмякомпонЕнта—>

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

1. Я работаю над приложением Blazor, и я уже добавил ссылку на свой проект на странице _Imports

2. @JohnDiGriz, В моем примере приложения я могу перейти на страницу SharedComponents с помощью NavLink , а также с помощью NavigationManager.NavigateTo также напрямую, изменив маршрут в URL-адресе broswer. не уверен, в чем именно ваша проблема. Попробуйте отладить ее, сохранив точки торможения в _App.razor также в новом компоненте. Попробуйте очистить кэш и удалить историю браузера и запустите приложение.

3. можете ли вы рассказать мне о шагах? Потому что я пытался создать образец приложения, но проблема все еще существует. Возможно, я забыл что-то еще

4. @JohnDiGriz Ниже приведены шаги, которые я выполнил * Создал компонент Map в SharedComponentsProject * Добавил ссылку в _Imports.razor * Создал новый компонент razor в проекте пользовательского интерфейса и использовал имя компонента внутри вновь созданного компонента и упомянул @page <--url--> * Добавил NavLink на странице навигации и упомянул сценарий path 2 * Добавил кнопку в компоненте Home в упомянутом событии NavigationManger with path компонента, который я хочу перенаправить, Оба случая сработали для меня.

5. Я не уверен, что именно я сделал, но после нескольких дней возни с ней, она начала работать нормально. Спасибо