我试图建立一个系统,其中第一个URL子目录将是动态的,但也可以作为对页面上显示的动态内容的查询。这可能吗?
例如,用户可以输入如下地址:
http://localhost:8885/chase/
http://localhost:8885/bank-of-america/
http://localhost:8885/.../
我如何能够将查询绑定到chase
或bank-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 Core配置,但并不确切知道如何设置它。这是我到目前为止的想法,(位于Configure
的{{1}}方法中:
Startup.cs
注意:我没有在任何地方定义app.UseMvc(config =>
{
config.MapRoute(
name: "Default",
template: "{bank?}/{controller?}",
defaults: new { controller = "App", action = "Index" }
);
});
,也不知道这是否是正确的术语。
如果某人有通过AngularJS而不是C#的路由解决方案,我也会对此开放!有人可以帮忙吗?
答案 0 :(得分:0)
如果是我,我会将您的ASP地图路线模板设置回原始默认值: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;
}
}
添加路由的Bank
部分会在调用您的应用路由和银行API呼叫之间消除歧义。然后,在您的AngularJS应用程序中,让您的服务使用以下格式的URI调用控制器:http://localhost:8885/bank/chase/
。