【发布时间】:2015-08-26 00:19:03
【问题描述】:
我已经设法让我的 MVC 项目以 SEO 友好的方式呈现新闻项目列表:
/News/ - 展示列表
/News/NewsItem/id/news-item-title - 单个新闻项目
我真正想要的是:
新闻/id/news-item-title
Stackoverflow 是如何提出问题的。
但是,我似乎无法理解如何进行路由以区分具有相同控制器操作名称(索引)的两个操作。
任何建议将不胜感激。
编辑:
这是我的路线配置:
routes.MapRoute(
"News",
"News/NewsItem/{newsId}/{newsTitle}",
new { controller = "News", action = "NewsItem", newsTitle = UrlParameter.Optional },
new { newsId = @"\d+" }
);
routes.MapRoute(
name: "Default",
url: "{controller}/{action}/{id}",
defaults: new { controller = "SkipHire", action = "Index", id = UrlParameter.Optional }
);
编辑 2:
这是我将所有内容修改为:
路线
routes.MapRoute(
"News",
"{controller}/{id}/{newsTitle}",
new { action = "NewsItem", newsTitle = UrlParameter.Optional }
);
控制器
public class NewsController : Controller
{
public ActionResult Index()
{
var q = _ctx.tblNews.OrderBy(x => x.newsCreateDate)
.Where(x => x.WebsiteID == 2).ToList();
return View(q);
}
public ActionResult NewsItem(int newsId, string newsTitle)
{
return View();
}
}
查看 - 索引(段)
<table>
@foreach (var x in Model)
{
<tr>
<td>@Html.ActionLink(x.newsTitle, "NewsItem", new { newsId = x.newsID, newsTitle = x.newsTitle.ToSeoUrl() })
</td>
</tr>
}
</table>
Actionlink 产生:News/NewsItem?newsId=3&newsTitle=my-news-item
我想要:News/3/my-news-item
【问题讨论】:
-
你能显示你当前的路线配置吗?
标签: asp.net-mvc-4 asp.net-mvc-routing