0

我已將VS2010中的網站項目從VS2010轉換爲Web應用程序項目。現在我想將一個VS2012 MVC4項目集成到這個VS2013項目中。所以我在這個新的VS2013項目中創建了一個名爲Test的MVC區域。因此,一個新的類在測試區文件夾中創建如下:如何在VS2013 web項目中同時使用WebForms和MVC進行路由

public class TestAreaRegistration : AreaRegistration 
    { 
     public override string AreaName 
     { 
      get 
      { 
       return "Test"; 
      } 
     } 

     public override void RegisterArea(AreaRegistrationContext context) 
     { 
      context.MapRoute(
       "Test_default", 
       "Test/{controller}/{action}/{id}", 
       new { action = "Index", id = UrlParameter.Optional } 
      ); 
     } 
    } 

裏面的「測試」區域的控制器文件夾,我創建了Index操作方法的HomeController的 - 和相應的視圖「Index.cshtml」。

當我運行該應用程序時,它默認打開WebFomrms的Default.aspx頁面。如果我通過http://localhost:1234/WebAppName/Home/Index打開應用程序,它將打開Index.cshtml視圖。到目前爲止,我喜歡這一切。

如何在此新應用程序中進行路由以在Webform和MVC視圖之間導航。例如,我的WebForm主頁有一個左側導航欄,我可以鏈接到一些WebForm頁面,用戶可以毫無問題地導航到這些頁面。如何爲MVC向此WebForm左側導航欄添加鏈接,以便用戶可以在Webform頁面和MVC視圖之間來回導航。

我的項目是針對.NET 4.5.1。

回答

0

您可以只使用一個Response.Redirect的從你的WebForms與被路由到您的問題控制器正確的URL代碼,我在你的情況猜測,那就是:

Response.Redirect("/Home/Index"); 

甚至更​​好你可以作出的HtmlHelper的擴展方法來處理你的路由:

public static class ExtensionMethods 
    { 
     public static MvcHtmlString WebFormActionLink(this HtmlHelper htmlHelper, string linkText, string ruoteName, object routeValues) 
     { 
      var helper = new UrlHelper(htmlHelper.ViewContext.RequestContext); 

      var anchor = new TagBuilder("a"); 
      anchor.Attributes["href"] = helper.RouteUrl(routeName, routeValues); 
      anchor.SetInnerText(linkText); 
      return MvcHtmlString.Create(anchor.ToString()); 
     } 
    } 

你的路由:

public static void RegisterRoutes(RouteCollection routes) 
{ 

    routes.MapPageRoute(
      "Webforms-Route", // Route name 
      // put your webforms routing here 
     ); 

     routes.MapRoute(
      "MVC-Route", // Route name 
      "{controller}/{action}/{id}", // URL with parameters 
      new { controller = "Home", action = "Index", id = UrlParameter.Optional } 
      ); 
    } 

然後,您只需將您的路線傳遞給您的HtmlHelper,您將獲得正確的路線。

相關問題