Ранее в ASP.NET MVC
<routes>
<add name = "VehicleDetailRoute" url = "TwoWheeler/VehicleDetail/{id}">
<defaults controller = "Integration" action = "VehicleDetail" id = "Optional" />
</add>
</routes>
public void RegisterRoutes(RouteCollection routes)
{ //Fill the route table section
RouteSection routesTableSection = GetRouteTableConfigurationSection();
if (routesTableSection == null || routesTableSection.Routes.Count <= 0)
return;
for (int routeIndex = 0; routeIndex < routesTableSection.Routes.Count; routeIndex++)
{
//base on different route, we have created dynamic routes and add in to
var routeElement = routesTableSection.Routes[routeIndex];
var route = new Route(
routeElement.Url,
GetDefaults(routeElement),
GetConstraints(routeElement),
GetDataTokens(routeElement),
GetInstanceOfRouteHandler(routeElement));
routes.Add(routeElement.Name, route);
}
}
Здесь Клиент видит TwoWheeler / VehicleDetail / в браузере, но внутри он рассматривает контроллер как Интеграция и действие как "АвтомобильДеталь"
Теперь в .Net Core мы создали файл JSON и хотим его прочитать. (хотите перейти на .Net Core 2.0 из ASP.NET MVC). При необходимости вы можете изменить формат или JSON.
{
"routes": {
"VehicleDetailRoute": {
"url": "TwoWheeler/VehicleDetail/{id}",
"controller": "Integration",
"action": "VehicleDetail",
"id": "Optional"
}
}
}
Пока что я прочитал конфигурацию в файле Запускать
public Startup(IConfiguration configuration)
{
var configurationBuilder = new ConfigurationBuilder()
.SetBasePath(Directory.GetCurrentDirectory())
.AddJsonFile("routes.json", optional: false, reloadOnChange: true);
Configuration = configurationBuilder.Build();
}
Добавлен services.AddRouting(); в ConfigureServices
В методе Configure добавлен app.UseStaticFiles();
Построить маршрутизацию
var routeBuilder = new RouteBuilder(app);
routeBuilder.MapGet("{route}", context =>
{
var routeMessage = Configuration.AsEnumerable()
.FirstOrDefault(r => r.Key == context.GetRouteValue("route")
.ToString())
.Value;
var defaultMessage = Configuration.AsEnumerable()
.FirstOrDefault(r => r.Key == "default")
.Value;
var response = (routeMessage != null) ? routeMessage : defaultMessage;
return context.Response.WriteAsync(response);
});
app.UseRouter(routeBuilder.Build());
Вопрос: на основе URL-адреса, введенного клиентом, я хочу перенаправить действие с частицами. Хотите выполнить метод ниже с динамическим вводом
app.UseMvc(routes =>
{
routes.MapRoute(
name: "default",
template: "{controller=Integration}/{action=VehicleDetailOnline}/{id?}");
});
Проверенная ниже ссылка: radu-matei.com - c-sharpcorner - Переполнение стека





Вы рассматривали возможность перезаписи URL для этого? вы можете настроить их со своего хост-сервера (IIS, Apache и т. д.) или использовать для этого промежуточное ПО .Net Core.
Перейдите по этой ссылке, чтобы узнать, как его использовать: https://docs.microsoft.com/en-us/aspnet/core/fundamentals/url-rewriting?view=aspnetcore-2.0&tabs=aspnetcore2x
Редактировать:
Вот пример кода, я пишу его мысленно, поэтому, вероятно, будут ошибки, но общая идея должна быть в порядке.
Возможно, вам придется переписать URL-адрес как регулярное выражение, чтобы он работал лучше, поэтому это будет примерно так:
{
"routes": {
"VehicleDetailRoute": {
"url": "^TwoWheeler/VehicleDetail/(.*)",
"controller": "Integration",
"action": "VehicleDetail",
"id": "Optional"
}
}
}
Тогда код установки будет таким:
public void Configure(IApplicationBuilder app)
{
var options = new RewriteOptions();
foreach(var rule in redirectRules){
options.AddRewrite(rule.url,rule.controller+'/'+rule.action+"/$1")
}
app.UseRewriter(options);
app.Run(context => context.Response.WriteAsync(
$"Rewritten or Redirected Url: " +
$"{context.Request.Path + context.Request.QueryString}"));
}
Простое объяснение того, что происходит, заключается в том, что когда запрос начинается с TwoWheeler/VehicleDetail/, эта часть будет изменена на Integration/VehicleDetail/.
Я действительно предлагаю вам осмотреть модули Url Rewrite на вашем веб-сервере, чтобы увидеть все трюки, которые вы можете с ним сделать.
У вас есть демо по этому поводу?
У меня сейчас нет демонстрации, но я могу поработать для вас код позже сегодня.
Спасибо тебе, друг. Очень признателен.
Здесь можно увидеть «Переписанный или перенаправленный URL: ...» на белой странице, но я хочу перенаправить частичный URL.
Что ж, вам нужно удалить приложение. Запустите, так как оно закоротит ваш запрос здесь, у меня оно было для демонстрации. Удалите его и используйте обычную настройку после этого (MVC или другое промежуточное ПО, которое вы используете).
Я новичок в .net Core, поэтому не знаю, что делать после удаления app.Run
Как и в коде, который вы указали в своем вопросе: app.UseMvc(routes => { routes.MapRoute( name: "default", template: "{controller=Integration}/{action=VehicleDetailOnline}/{id?}"); });
Есть ли что-нибудь, что мешает вам использовать маршрутизацию атрибутов?