2016-12-29 131 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