2013-03-22 63 views
0

我有一個視圖,呈現新聞列表,我有一個href標記,我需要調用一個Detail方法並將它傳遞給新聞ID,現在我在我的網址有一個查詢字符串 新聞/詳細信息?id = x ...但我需要像新聞/詳細信息/類別/標題的東西,與新聞類別,名稱和沒有編號的友好的網址Mvc:通過身份證但不顯示在友好的網址

這是我的行動,它的工作原理,但我得到的是查詢字符串

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

路由可能被其他路由覆蓋。因此,請複製此路線並將其移至頂部。我的意思是,將這條路線放在另一個的頂部 – 2013-03-22 04:34:40

回答

0

試試這個:

@Html.RouteLink("Read More", "Details", new { action = "Details", id = item.newsId, category = item.categoryName, newsName = item.newsName }) 
+0

它工作完美,所以現在我可以發送多個參數給我的ActionResult,並且我擁有和URL友好的東西,如News/Details/Id/Category/Title-of-something ,routes.MapRoute是正確的,所以你知道我怎麼能發送id到我的行動結果,並有我的網址與新聞/詳情/類別/標題的東西沒有id。謝謝 – Steve 2013-03-22 16:23:03

0

用途:

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

首先URL正確

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

你可能會Route Debugger每當你看到與路線有關的問題