2016-12-29 130 views
0

因此,我正在編寫一個ASP.NET MVC應用程序,並且我在路由aspx文件時遇到了一些問題 - 通常會使其工作。
比方說,我有一個剃鬚刀頁,我想,例如,從數據庫中打開特定行和表現出來,這是非常簡單的,我只是在index.cshtml寫:
ASP.NET MVC路由aspx文件

@Url.Action("Details", new { id = item.DB_Id }) 

和詳細信息頁面打開,我可以看到在數據庫中此行的具體信息
代碼路由:

routes.MapRoute(
      name: "Default", 
      url: "{controller}/{action}/{id}", 
      defaults: new { controller = "Home", 
          action = "Index", 
          id = UrlParameter.Optional 
          } 

但是,當我想要做相同的,但而不是打開details.cshtml文件我想和details.aspx做(Web窗體)出現問題。控制器必須有所不同,路由代碼是否有所不同?或者它基本上可能嗎?和想法或提示?

+0

看看[這個答案](http://stackoverflow.com/questions/10175200/how-to-route-a-aspx-page-in-asp-net-mvc-3-project)或[this] (http://stackoverflow.com/questions/10590662/route-from-incoming-aspx-url-to-an-asp-net-mvc-controller-action)幫助你 –

+0

@ElmerDantas我甚至無法打開我的。帶有.cshtml參數的aspx文件。它甚至有可能嗎?它只能做.aspx - > .aspx?而且.aspx文件如何獲得參數並轉到特定數據庫? – imaco

+0

另一個[鏈接](http://stackoverflow.com/questions/7407801/mixing-razor-views-and-web-forms-master-pages)這可能會幫助你。我從來不需要這樣想,所以我不知道它是否可能。我很好奇,並開始閱讀,看看是否有可能實現它 –

回答

0

Url.Action幫助程序不會爲Web窗體頁面創建URL,因爲它們不是Actions。你需要做的是這樣

@Url.Content("~/somefolder/Details.aspx?id=" + item.DB_Id) 

Url.Content是爲創建網址的靜態文件,但它也與Web窗體效果很好。

您可以創建自己的幫助程序,以更乾淨地處理參數。我沒有時間做執行的權利,但你可以創建類似:

@Url.WebFormsPage("~/somefolder/Details.aspx", new { id = item.DB_Id }) 

助手可以使用反射來生成相應的查詢字符串,並將其添加到URL。

+0

謝謝我的男人!我花了2天試圖通過改變路線,控制器等工作。現在我已經得到了我想要的! – imaco

+0

@imaco假設您註冊了您的Web窗體頁面路線,可以使用內置的幫助程序。我不確定,我從來沒有嘗試過。請參閱[UrlHelper.RouteUrl](https://msdn.microsoft.com/en-us/library/system.web.mvc.urlhelper.routeurl(v = vs.118).aspx#M:System.Web.Mvc。 UrlHelper.RouteUrl%28System.String,System.Object%29)和[如何在Web窗體中定義路由](https://msdn.microsoft.com/en-us/library/cc668177.aspx)。如果我是你,我寧願只去所有的MVC並放棄Web窗體,但如果你已經有了Web窗體頁面來做你想做的事情,它可能會很有用。 – mason