2

我正在使用c#,visual studio 2010.我是MVC的新手 我提供了一個簡單的HTML頁面,我轉換爲aspx視圖。然後我添加了控制器。 視圖目錄是Views/150/Index.aspx。問題是,當我去添加控制器時,類名不允許是數字。MVC 2.0以數字開頭的視圖

namespace MyPages.Controllers 
{ 
    public class _50Controller : Controller 
    { 

     public ViewResult Index() 
     { 
      return View("Index"); 
     } 

    } 
} 

當我輸入控制器號時,它會自動將其從150更改爲_50。所以我將它改爲150Controller.cs,並將類名改爲150Controller:Controller。 不幸的是,你不能將一個數字作爲類名,而_50Controller作爲類名試圖直接指向Views/_50/Index.aspx。 我只是簡單地改變了名字,但是我特意要求將它作爲一個數字。我知道我可以在ISS中設置重定向...但是還有其他方法可以做到這一點嗎? 謝謝!

+0

爲什麼它應該是一個數字?可能你只需要將該號碼作爲URI的一部分,在這種情況下,您可以使用區域或自定義路由,如url:「150/{controller}/{action}/{id}」 – VahidNaderi

+0

我被要求將該頁面作爲特定鏈接。像www.blah.com/mypages/150.aspx – nebulous

回答

0

在C#成員不能以數字開頭。你可以使用路由爲了實現這一目標:

例如,你可以有以下控制器:

public class ErrorController : Controller 
{ 
    public ActionResult Index() 
    { 
     return View("500"); 
    } 
} 

可能被路由這樣的:

routes.MapRoute(
    name: "Error", 
    url: "500", 
    defaults: new { controller = "Error", action = "Index" } 
); 

現在,當您導航到http://example.com/500將執行ErrorControllerIndex動作,該動作將被執行並且將呈現500.aspx視圖。

+0

使用你的例子,實際頁面應該在Views/Error/Index.aspx中嗎? – nebulous

+0

不,它應該在'〜/ Views/Error/500.aspx'中。但是如果你'返回View();'而不是'返回View(「500」);'(如我的答案所示),你可以使用'〜/ Views/Error/Index.aspx'。 –

+0

非常感謝。有用。 – nebulous