【发布时间】:2017-11-03 11:41:08
【问题描述】:
我在一个商业平台上工作,想要 SEO 友好的 URL,我已经创建了以下路线
routes.MapRoute(
name: "Common",
template: "{generic_se_name}",
defaults: new { controller = "Common", action = "Show" }
);
routes.MapRoute(
name: "Product",
template: "{productName}",
defaults: new {controller = "Product", action = "Show"}
);
routes.MapRoute(
name: "Category",
template: "{categoryName}",
defaults: new { controller = "Catalog", action = "Show" }
);
routes.MapRoute(
name: "default",
template: "{controller=Home}/{action=Index}/{id?}");
但是,当我致电 http://localhost/creme 时,它会进入公共区域,这就是我期望发生的事情。在那,我查看数据库以确定它是产品还是类别,如果它是我做的产品
public IActionResult Show(string generic_se_name)
{
var type = db.UrlRecords.FirstOrDefault(x => x.Slug == generic_se_name);
if (type != null)
{
switch (type.EntityType)
{
case "Product":
return RedirectToRoute("Product", new {productName = generic_se_name });
case "Category":
return RedirectToRoute("Category", new { categoryName = generic_se_name });
}
}
return BadRequest();
}
但即使我说它应该重定向到产品路由,它也会一直调用通用路由。
我做错了什么?
问候克劳斯
【问题讨论】:
-
这个问题有帮助吗? stackoverflow.com/questions/8944355/…你有什么理由不使用 RedirectToAction?
-
好吧,我想我可以这样做,但我认为这不会解决我的问题,因为我正在寻找的短网址是 host/productname 和 host/categoryname 和 host/brandname
标签: .net asp.net-mvc asp.net-core