我想更改我正在处理的网站,以便当有人创建文章时,路径将是“文章/ ViewArticle / 2016-10-04 / test”而不是现在它只是“文章/ ViewArticle / test ”。当我实现它时,我得到了一个404.
我试过在&之前创建这条路线在默认路由之后,但仍然没有去:
routes.MapRoute(
name: "ArticlesDefault",
url: "{controller}/{action}/{date}/{id}",
defaults: new { controller = "Articles", action = "ViewArticle", date = UrlParameter.Optional, id = UrlParameter.Optional }
);
我应该注意,“id”实际上作为[date] / ArticleTitle存储在数据库中。
有人能帮忙吗?
答案 0 :(得分:1)
改为使用属性路由。通过使用属性路由,您可以使用传递给操作方法的参数值来构造路径。
有关属性路由的更多信息,请访问https://blogs.msdn.microsoft.com/webdev/2013/10/17/attribute-routing-in-asp-net-mvc-5/
如果您不想使用属性路由,可以使用constraints
方法的MapRoute
参数
修改强>
您可以尝试以下任何一种方法
不使用属性路由。我认为您的ID格式为{date}/articleTitle
routes.MapRoute(
name: "ArticlesDefault",
url: "{controller}/{action}/{id}",
defaults: new { controller = "Articles", action = "ViewArticle" },
constraints: new { id = “\\d+” });
使用属性路由。最好的方法是将文章日期和文章标题分成两个不同的参数。然后,您可以使用以下代码。
[Route("Articles/ViewArticle/{articleDate:datetime}/{articleTitle}")]
public ActionResult ViewArticle(string articleTitle, DateTime articleDate)
{
//your action code goes here
}