C# ASP.NETCore和AngularJS:如何基于数据库记录创建动态路由/内容?

C# ASP.NETCore和AngularJS:如何基于数据库记录创建动态路由/内容?,c#,asp.net,angularjs,routing,asp.net-core,C#,Asp.net,Angularjs,Routing,Asp.net Core,我正在尝试一个系统,其中第一个URL子目录将是动态的,但也可以作为对页面上显示的动态内容的查询。这可能吗 例如,用户可以按如下方式输入地址: public JsonResult DirectoryQuery(string subDomain) { return _context.Banks .Where(t => t.ExtName == subDomain) .FirstOrDefault(); } http://localhost:8885/c

我正在尝试一个系统,其中第一个URL子目录将是动态的,但也可以作为对页面上显示的动态内容的查询。这可能吗

例如,用户可以按如下方式输入地址:

public JsonResult DirectoryQuery(string subDomain) {
    return _context.Banks
        .Where(t => t.ExtName == subDomain)
        .FirstOrDefault();
}
http://localhost:8885/chase/

http://localhost:8885/bank-美国的/

http://localhost:8885/.../

如果记录存在,我如何将查询绑定到
chase
bankofamerica
,并使用动态内容填充页面,否则将重定向到“This page DNE”等“默认”视图

假设我的
AppController.cs
像这样处理这些查询:

public JsonResult DirectoryQuery(string subDomain) {
    return _context.Banks
        .Where(t => t.ExtName == subDomain)
        .FirstOrDefault();
}
然后,我的角度控制器进行了这样的查询:

app.controller('AppController', function ($scope, $location, LookupService) {

    var urlString = $location.path();

    (function() {
        LookupService.CheckURL(urlString).then(function(data) {
            if (data == null) {
                window.location.pathname = '404';
            }
            else {
                console.log('This page exists');
            }
        }
    })();
})
.factory('LookupService', function($http) {
    var LookupServiceData = {};

    LookupServiceData.CheckURL = function(data) {
        return $http({
            url: '/App/DirectoryQuery',
            method: 'POST',
            data: JSON.stringify(data),
            headers: {'content-type'" 'application/json'}
        });
    };

    return LookupServiceData;
});
我使用的是
MapRoute
ASP.Net核心配置,但不知道如何进行设置。以下是我目前的想法(位于
Startup.cs
Configure
方法中):

app.UseMvc(config =>
{
    config.MapRoute(
        name: "Default",
        template: "{bank?}/{controller?}",
        defaults: new { controller = "App", action = "Index" }
        );
});
注意:我没有在任何地方定义
{bank?}
,也不知道这是否是正确的术语


如果有人通过AngularJS而不是C#,我也愿意这样做!有人能帮忙吗?

如果是我,我会将您的ASP地图路由模板设置回原始默认值:
模板:“{controller=Home}/{action=Index}/{id}”)
并专门为您的银行请求创建一个控制器,如下所示:

[Route("Bank")]
public class BankController : Controller
{
    private IBankService BankService;

    public BankController(IBankService bankService) {
        BankService = bankService ?? new IBankService();
    }


    [HttpGet("{bankStringId}")]
    public string Index(string bankStringId)
    {
        var result = someServiceMethod(bankStringId);
        return result;
    }

}
添加路由的
Bank
部分可以消除调用应用程序路由和银行api调用之间的歧义。然后,在您的AngularJS应用程序中,让您的服务使用以下格式的URI调用控制器:
http://localhost:8885/bank/chase/