2016-04-28 35 views
0

我有以下頁面Multisubject頁面在MVC

http://example.com/color/red 
http://example.com/car/escort 

在ASP.NET網絡表單,我可以使用URL重寫改寫這兩個頁面,以便將規則重寫網頁,以

http://example.com/process.aspx?subject=color&type={1} 
http://example.com/process.aspx?subject=car&type={1} 

和那麼Process.aspx會完成所有的工作。

有沒有一種方法可以在不使用IIS重寫的情況下在MVC中模擬上述內容?這是在MVC路由或其他地方處理,我需要IIS重寫來幫助我嗎?

+0

我想我理解你的問題。我的問題,爲什麼不使用QueryString方法?如果你想使用甚至參數? –

+0

我想要的顏色/紅色風格的SEO方法風格,而不是做第二種方法。 – MiscellaneousUser

回答

0

您可以使用MVC路由。假設http://example.com/將調用主控制器上的索引方法。如果用戶瀏覽到使用http://example.com/Car/somecare頁面您可以將默認圖路線

routes.MapRoute(
        name: "RouteWithColor", 
        url: "Color/{Color}", 
        defaults: new { controller = "Home", action = "Index" } 
       ); 

    routes.MapRoute(
    name: "RouteWithCar", 
    url: "car/{car}", 
    defaults: new { controller = "Home", action = "Index" } 
     ); 

然後前添加在您的控制器

 var car = RouteData.Values["Car"]; 
     var color = RouteData.Values["Color"]; 

有了這個,你將有值它的變量。所以你可以檢查你的變量是否爲空,並繼續你的治療

+0

我試圖實現與 routes.MapRoute( 名稱: 「明星」, 網址: 「{控制器}/{行動}/{ID}」, 默認:新{控制器= 「明星」,動作= 「Index」,id = UrlParameter.Optional} ); 但是當我做localhost/star/sirius時,它返回404錯誤。我確實嘗試了Oussama_gd建議的方法。如果我做本地主機/明星,它開始調試器。對不起格式。 – MiscellaneousUser

+0

如果我將MapRoute設置爲: - routes.MapRoute(「」,「star/{sstar}」,new {Controller =「star」,id = UrlParameter.Optional});然後得到它的工作,該網址是localhost /明星/索引/小天狼星這絕對不是我想要的。我不希望索引出現在URL中。我如何從URL中刪除索引? – MiscellaneousUser