ASP.NET CORE和ANGULALJS:如何基于数据库记录拥有动态路由/内容



我正在尝试拥有一个系统,其中第一个URL子目录将是动态的,但也充当了页面上显示的动态内容的查询。这可能吗?

例如,用户将能够这样输入地址:

http://localhost:8885/chase/

http://localhost:8885/bank-of-america/

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

如果存在记录,我将如何将查询与 chasebank-of-america联系在一起,并用动态内容填充页面,否则将其重定向到"默认"视图,例如"此页面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.csConfigure方法中:

app.UseMvc(config =>
{
    config.MapRoute(
        name: "Default",
        template: "{bank?}/{controller?}",
        defaults: new { controller = "App", action = "Index" }
        );
});

注意:我在任何地方都没有定义{bank?},也不知道这是否是正确的术语。

如果有人通过AngularJS而不是C#有路线解决方案,我也对此开放!谁能帮忙?

如果是我,我会将您的ASP MAP路由模板设置为原始默认值:template: "{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;
    }
}

在调用应用程序路由和银行API调用之间,路由的Bank部分添加。然后,在您的AngularJS应用中,请您的服务以这种格式与URIS拨打控制器:http://localhost:8885/bank/chase/

相关内容

最新更新