C# ASP.NETCore和AngularJS:如何基于数据库记录创建动态路由/内容?
我正在尝试一个系统,其中第一个URL子目录将是动态的,但也可以作为对页面上显示的动态内容的查询。这可能吗 例如,用户可以按如下方式输入地址: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
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/