我正在尝试拥有一个系统,其中第一个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核心配置,但不知道如何设置此设置。这是我认为它到目前为止的东西(位于Startup.cs
的Configure
方法中:
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/
。