我有这样的网址:
http://localhost:17594/Contact/Contact
现在我想这样表现出来:
http://localhost:17594/Contact/Contact-us
RouteConfig:
public static void RegisterRoutes(RouteCollection routes)
{
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.MapRoute(
name: "Categories",
url: "Categories/{id}",
defaults: new { controller = "Categories", action = "Index", id = UrlParameter.Optional },
namespaces: new[] { "FinalKaminet.Controllers" }
);
routes.MapRoute(
name: "Contacts",
url: "{controller}/{title}",
defaults: new { controller = "Contact", action = "Contact", title = UrlParameter.Optional },
namespaces: new[] { "FinalKaminet.Controllers" }
);
routes.MapRoute(
name: "Default",
url: "{controller}/{action}/{id}/{title}",
defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional , title = UrlParameter.Optional },
namespaces: new[] { "FinalKaminet.Controllers" }
);
}
查看
@Html.ActionLink("Contact Us", "Contact" , "Contact" , new { title = "contact-us" } , null)
但我在第63行中遇到使用Categories
地图路线的错误。
异常详细信息:System.InvalidOperationException:中没有路由 路由表匹配提供的值。
来源错误:
第62行:@ Html.ActionLink(“وبلاگ”,“”)
第63行:@ Html.Action(“MenuCat”,“Home”)
有什么问题?
答案 0 :(得分:0)
要将网址操作显示为Contact-us(以定义路由),您可以使用属性路由。
[Route("Contact/Contact-us")]
public ActionResult Contact() { … }
有关更多信息,请参阅msdn。 https://blogs.msdn.microsoft.com/webdev/2013/10/17/attribute-routing-in-asp-net-mvc-5/
答案 1 :(得分:0)
试试这个
在路线配置文件中:
routes.MapRoute(
name: "Contacts",
url: "Contact/{action}/{title}",
defaults: new { controller = "Contact", action = "Contact", title = UrlParameter.Optional },
namespaces: new[] { "FinalKaminet.Controllers" }
);
答案 2 :(得分:0)
您有两种选择。
通过基于约定的路由添加特定路由
routes.MapRoute(
name: "ContactUs",
url: "contact/contact-us",
defaults: new { controller = "Contact", action = "Contact" },
namespaces: new[] { "FinalKaminet.Controllers" }
);
routes.MapRoute(
name: "Default",
url: "{controller}/{action}/{id}/{title}",
defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional , title = UrlParameter.Optional },
namespaces: new[] { "FinalKaminet.Controllers" }
);
或者在基于约定的路线
之前在RouteConfig中启用属性路由//enable attribute routing
routes.MapMvcAttributeRoutes();
//other convention-based routes.
routes.MapRoute(....);
并将路径直接应用于控制器和操作。
public class ContactController : Controller {
//GET contact/contact-us
[HttpGet]
[Route("Contact/Contact-us")]
public ActionResult Contact() { … }
}