我有一个呈现新闻列表的视图,因为我有一个href标签,我需要调用一个Detail方法并将其传递给新闻ID,现在我在我的网址中有一个查询字符串,就像那样 新闻/详细信息?id = x ...但是我需要类似新闻/详情/类别/标题的内容,一个包含新闻类别,名称和没有ID的友好网址
这是我的行动,它有效但我得到了查询字符串
foreach (var item in Model)
{
<a href='@Url.Action("Details", "News", new { id = item.newsId, category = item.categoryName, name = item.newsName })' title=""> Read More </a>
}
我尝试使用Url.RouteUrl
之类的东西 routes.MapRoute(
name: "Details",
url: "{controller}/{action}/{id}/{category}/{newsName}",
defaults: new { controller = "News", action = "Details"}
);
但它永远不会转到详细信息actionresult,而且我还需要传递id参数来显示一些新闻详细信息,但我不想在友好的URL中显示它。我真的很困惑如何实现它。提前致谢
答案 0 :(得分:0)
使用:
<a href='@Url.Action("Details", "News", new { id = item.newsId, category = item.categoryName, newsName = item.newsName })' title=""> Read More </a>
答案 1 :(得分:0)
试试这个:
@Html.RouteLink("Read More", "Details", new { action = "Details", id = item.newsId, category = item.categoryName, newsName = item.newsName })
答案 2 :(得分:0)
确保您的路线未被其他路线覆盖。所以先把你的路线放在RoutConfig.cs中 将您的代码更改为:
foreach (var item in Model)
{
<a href='@Url.Action("Details", "News", new { id = item.newsId, category = item.categoryName, newsName = item.newsName })' title=""> Read More </a>
}//change name=item.newsName to newsName=item.newsName
还要确保您的控制器根据您的路由详细信息具有正确的签名:
public class NewsController : Controller
{
public ActionResult Details(int id, string category, string newsName )
}
答案 3 :(得分:0)
第一个网址更正
<a href='@Url.Action("Details", "News", new { id = item.newsId, category = item.categoryName, newsName = item.newsName })' title=""> Read More </a>
只要您看到与路线相关的问题,您就可以Route Debugger