Настройка Aurelia для использования.cshtml
Я нашел очень полезную статью, показывающую, как использовать Razor partials (cshtml) с aurelia. Однако я не смог заставить работать код и узнал из комментария Робизенберга, что
ConventionalViewStrategy.convertModuleIdToViewUrl
был объявлен устаревшим Он прокомментировал: "Вы хотите использовать сервис ViewLocator". Я следил за проектом gitHUb и не мог понять, что он имеет прямое отношение к моему использованию с MVC5 и Razor Partials. Так что я в замешательстве.
Это пример файла main.js, который я надеялся откорректировать, чтобы направить Аурелию в Home/Index/Index.cshtml вместо index.html.
import {LogManager} from "aurelia-framework";
import {ConsoleAppender} from "aurelia-logging-console";
import {ConventionalViewStrategy} from "aurelia-framework";
LogManager.addAppender(new ConsoleAppender());
LogManager.setLevel(LogManager.logLevel.debug);
export function configure(aurelia) {
aurelia.use
.standardConfiguration()
.developmentLogging();
ConventionalViewStrategy.convertModuleIdToViewUrl = function(moduleId){
var moduleName = moduleId.replace("Scripts/", "");
return `./Templates/${moduleName}`;
}
aurelia.start().then(a => a.setRoot("./Scripts/index", document.body));
}
Может кто-нибудь сказать мне, как настроить aurelia в проекте MVC5 для использования.cshtml вместо.html шаблонов? Я использую Typescript и VS2015
1 ответ
Я только что успешно следовал подходу, упомянутому на http://ilikekillnerds.com/2016/02/using-views-different-locations-aurelia/:
import {Aurelia, ViewLocator, Origin, Container} from 'aurelia-framework';
export function configure(aurelia: Aurelia, container: Container) {
aurelia.use
.standardConfiguration()
.developmentLogging();
ViewLocator.prototype.convertOriginToViewUrl = (origin: Origin) => {
var moduleId: string = origin.moduleId;
var moduleName = moduleId.split('/')[moduleId.split('/').length - 1].replace('ViewModel', 'View').replace('.js', '').replace('.ts', '');;
let newViewUrl = `./Templates/${moduleName}`;
console.log(newViewUrl); // e.g. ./Templates/app
return newViewUrl;
}
aurelia.start().then(() => aurelia.setRoot());
}