2012-12-18 69 views
2

安裝了ASP.Net 4.0的Web服務器,部署了Web Pages 2.0 DLL bin。用cshtml/razor編寫的頁面,但路由不起作用。ASP.NET Web頁面的路由如何在沒有global.asax的情況下工作

當只使用Web頁面而不是完整的MVC(我將在global.asax中定義我的路由)時,服務器上需要什麼來激活路由?

現在我只能使用傳統的URL和查詢字符串來調用我的頁面。

任何指針讚賞。

+0

是否包含「System.Web.Mvc.dll程序」和「System.Web.Routing.dll」在bin文件夾? –

+0

有MVC一個。只需添加路由,但沒有區別。無論如何,我認爲這將在服務器上的GAC中。 – Graeme

+0

您正在使用哪個版本的IIS? –

回答

1

在網頁框架中有兩種「路由」可用。默認路由在匹配URL到文件路徑時起作用。它非常靈活,因爲它允許額外的URL段填充UrlData字典,並且可以啓用一些漂亮的SEO友好URL構造。我在這裏寫了:WebMatrix - URLs, UrlData and Routing for SEO

第二種路由類似於MVC中可用的路由,需要安裝軟件包:Routing For Web Pages。安裝完成後,您可以將RouteCollection填充到_AppStart.cshtml文件中(您需要自行創建),也可以在global.asax中的Application_Start中執行此操作。當您選擇添加文件時,您可以通過在「選擇文件類型」對話框中選擇「全部」選項來添加global.asax文件。

如果你想知道如何使用路由包,我已經寫它:More Flexible Routing For ASP.NET Web Pages

3

Web窗體應用程序

的Global.asax

protected void Application_Start(object sender, EventArgs e) 
{ 
    RegisterRoutes(RouteTable.Routes); 
} 

public static void RegisterRoutes(RouteCollection routes) 
{ 
    routes.MapPageRoute("", 
     "Category/{action}/{categoryName}", 
     "~/categoriespage.aspx"); 
} 

MVC應用

的Global.asax

public class MvcApplication : System.Web.HttpApplication 
{ 
    public static void RegisterRoutes(RouteCollection routes) 
    { 
     routes.IgnoreRoute("{resource}.axd/{*pathInfo}"); 

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

    } 

    protected void Application_Start() 
    { 
     RegisterRoutes(RouteTable.Routes); 
    } 
} 

欲瞭解更多信息:

How to: Use Routing with Web Forms

ASP.NET Routing not working on IIS 7.0

Deploying ASP.NET MVC 3 to IIS 6

IIS URL Rewriting and ASP.NET Routing

ASP.NET Routing

我希望這將幫助你。

+1

在簡單的網頁應用程序中沒有global.asax。這就是爲什麼我試圖找出可能會丟失的東西。不過謝謝。 – Graeme

+0

@Graeme我添加了一些鏈接檢查。 – Sampath

相關問題