asp.net-mvc-自定义Aurelia以使用.cshtml

我发现一篇非常有用的文章,展示了如何与aurelia一起使用Razor局部函数(cshtml).但是,我无法运行代码并从RobEisenberg中获悉评论

ConventionalViewStrategy.convertModuleIdToViewUrl 

已被弃用.他评论说:“您想使用ViewLocator服务.”我关注了gitHUb项目,但看不到它与我对MVC5和Razor Partials的使用直接相关.所以我很困惑.

这是我希望可以进行调整的示例main.js文件,以便将aurelia路由到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));
}

谁能告诉我如何在MVC5项目中设置aurelia以使用.cshtml而不是.html模板?我正在使用Typescript和VS2015

最佳答案
我刚刚成功地遵循了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());
}

转载注明原文:asp.net-mvc-自定义Aurelia以使用.cshtml - 代码日志