У меня есть приложение MVC.Net Core 2.0 (изначально оно было 1.1 до того, как я его обновил), которое имеет странную причуду.Чтобы вызвать компонент просмотра с моей страницы, мне нужно создать собственную модель просмотра.Если я использую встроенный тип, такой как string, обработчик маршрутизации не может его найти.
Пример: я создал довольно простой ViewComponent, который я пытаюсь вызвать из моего View, которому нужна только одна строка.Но если я создал InvokeAsync (строка) вместо InvokeAsync (customVm), я получаю сообщение об ошибке, указывающее, что маршрутизация пытается использовать строковый параметр как часть пути.
ViewComponent:
public class SkilledQaPreviousComments : ViewComponent
{
public async Task<IViewComponentResult> InvokeAsync(string vm)
{
return View(vm);
}
}
Просмотр вызовов:
@await Component.InvokeAsync(nameof(SkilledQaPreviousComments), new { vm = Model.QaReviewEditReasonPrevious })
Startup.cs:
app.UseMvc(routes =>
{
routes.MapRoute(name: "areaRoute", template: "{area:exists}/{controller=Home}/{action=Index}/{id?}");
routes.MapRoute(name: "default", template: "{controller=Home}/{action=Index}/{id?}");
});
Расположение файлов:
Сообщение об ошибке, данное Model.QaReviewEditReasonPrevious = "[\" single \ "]":
Представление 'Components / SkilledQaPreviousComments / ["test"]' не найдено.Поиск был произведен в следующих местоположениях: /Areas/NurseForms/Views/Signature/Components/SkilledQaPreviousComments/["test"].cshtml /Areas/NurseForms/Views/Shared/Components/SkilledQaPreviousComments/["test"].cshtml / Views/Components/SkilledQaPreviousComments/["test"].cshtml
Если я изменяю компонент представления, чтобы принимать int и проходить 1, я получаю ту же ошибку только с '1' вместо '["test"]'.
Я просто не могу понять, почему он не ищет Default.cshtml.Другие компоненты представления в проекте работают, но у каждого из них есть собственная модель представления.Я бы предпочел не создавать пользовательскую модель представления просто для того, чтобы каждый раз удерживать строку, но сейчас это мой единственный вариант.
Идеи / Очевидные вещи, которые я здесь сделал неправильно?