2013-03-28 101 views
3

我需要我的網頁名稱中有短劃線。 E.G我們的願景剃刀文件名帶短劃線

我是MVC的新手& c#所以我可能會討論所有這些錯誤。

這裏是我的控制器:

public class HomeController : Controller 
    { 
     // 
     // GET: /Home/ 
     public ActionResult Index() 
     { 
      return View(); 
     } 
     // 
     // GET: /our-vision/ 
     public ActionResult ourVision() 
     { 
      return View(); 
     } 
    } 

然後在我的意見,我有次/主頁/ ourVision.cshtml。

當我編譯並去http://localhost/ourVision它的作品,但是當我去http://localhost/our-vision它不。

這裏是我的路由:

routes.MapRoute(
      "Default", // Route name 
      "{action}/{id}", // URL with parameters 
      new { controller = "Home", action = "Index", id = UrlParameter.Optional } // Parameter defaults 
     ); 
+2

可能重複:http://stackoverflow.com/questions/30310/asp-net -mvc-how-do-i-enable-dashes-in-my-urls –

+0

他使用mvc而不使用Razor。 – CharliePrynn

+1

@CharliePrynn嗯,MVC是框架,Razor是可以與MVC一起使用的許多可能的視圖引擎之一。該解決方案仍然適用,因爲它是核心MVC的東西。 – Yuck

回答

5

你需要做幾件事情,以實現這一目標。

一是實現our-Vision,你需要給你的操作方法ActionName屬性,就像這樣:

[ActionName("our-Vision")] 
public ActionResult ourVision() 

接下來,你要重命名您的ourVision.cshtml看法是our-Vision.cshtml

最後,無論何時使用Url.ActionActionLink,您需要使用our-Vision而不是vision,如下所示:

Url.Action("our-Vision", "Home"); 
1

恕我直言

要做到這一點,最好的辦法 - 就是定義的路由引擎的新航線:

routes.MapRoute(
      "OurVision", // Route name 
      "our-vision", // URL with parameters 
      new { controller = "Home", action = "ourVision" } // Parameter defaults 
     );