1

我有一个呈现新闻列表的视图,因为我有一个 href 标记,我需要调用一个 Detail 方法并将新闻 id 传递给它,现在我的 url 中有一个查询字符串,例如 News/Details?id= x ...但我需要像新闻/详细信息/类别/标题之类的东西,一个带有新闻类别、名称且没有 id 的友好 url

这是我的操作,它有效,但我得到了那个查询字符串

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"}
        );

但它永远不会进入详细信息操作结果,而且我需要传递 id 参数来显示一些新闻详细信息,但我不想在友好的 url 中显示它。我真的很困惑如何实现它。提前致谢

4

4 回答 4

0

尝试这个:

@Html.RouteLink("Read More", "Details", new { action = "Details", id = item.newsId, category = item.categoryName, newsName = item.newsName })
于 2013-03-22T04:23:24.137 回答
0

利用 :

<a href='@Url.Action("Details", "News", new { id = item.newsId, category = item.categoryName, newsName = item.newsName })' title=""> Read More </a>
于 2013-03-22T03:57:02.193 回答
0

第一个网址正确

<a href='@Url.Action("Details", "News", new { id = item.newsId, category = item.categoryName, newsName = item.newsName })' title=""> Read More </a>

每当您看到与路由相关的问题时,您都可以使用Route Debugger

于 2013-03-22T08:05:49.097 回答
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 )
}
于 2013-03-22T05:46:00.037 回答