2011-09-17 36 views
0

目前我的項目有一個頁面domain/cocktail,它顯示所有雞尾酒的列表。如果用戶想要過濾列表,他可以選擇排序順序,雞尾酒的開頭字母和強度。所以url看起來像domain/cocktail?letter=B&sort=nu&strength=2&page=4ASP.NET MVC URL - 正確的方法

正如我讀過的,它不是使用這樣的URL的最佳選擇。你可以建議什麼方法來獲得具有相同功能的SEO友好的URL。

回答

0

ASP.NET MVC應用程序使用ASP.NET路由系統,它決定URL如何映射到特定的控制器和操作。

在瀏覽器請求http://yoursite/Home的默認路由系統下,它獲取Controller的action方法的輸出。因此,如果您使用CoctailList操作方法推導從後端的列表,用戶將需要在http://yoursite/Controller/CoctailList

+0

現在我有CocktailController與索引操作。所以最好不要將索引操作用於這種目的?我該怎麼處理參數?如果我只有頁面參數,它將看起來像域/雞尾酒/ 3。但有幾個參數,它看起來像在我的文章上面。 – ChruS

+0

查看瀏覽器何時請求http:// yoursite/Home,它從HomeController的Index方法獲取輸出。因此,如果瀏覽器請求http:// yoursite/ConctailController,它將從ConctailController獲取index()方法。並且http:// yoursite/ConctailController/CockListFunc將指向您的控制器中的CockListFunc。因此,編寫一個CockListFunc,它返回一個列出所有合作伙伴的視圖。你需要將你的模型綁定到控制器並在視圖中表示 –

0

在你的情況,以點帶面,我會後的搜索條件,但我會把在頁面上一樣網址的結尾:

domain/cocktail/2 
domain/cocktail/3 

您可以通過創建一個JSON對象發佈數據:

var viewModel = new Object(); 
viewModel.Letter = "B"; 
viewModel.Sort = "nu"; 
$.post("/domain/cocktail/" + page, viewModel, function() { }); 
+0

我試圖使用'public ActionResult Index(int page,Options opt)'其中'Options'是一個具有'Sort','Strength'屬性的類,等等。如果我嘗試使用這個動作,那麼'/ domain/cocktail/1' url會出現錯誤「'/ cocktail/1' not found」。如果我將頁面作爲Options類的屬性傳遞,我會得到OK響應,但沒有任何反應(也許動作必須返回與View不同的東西)? – ChruS

相關問題