C# ASP.NET MVC路由aspx文件

C# ASP.NET MVC路由aspx文件,c#,asp.net,asp.net-mvc,C#,Asp.net,Asp.net Mvc,因此,我正在编写一个ASP.NETMVC应用程序,我在路由aspx文件时遇到了一点问题—一般来说,这是可行的 假设我有一个razor页面,我想,例如,从数据库中打开特定行并显示它,它非常简单,我只需在index.cshtml中编写: @Url.Action("Details", new { id = item.DB_Id }) 详细信息页面打开,我可以在数据库中看到此行的具体信息 路由代码: routes.MapRoute( name: "Default",

因此,我正在编写一个ASP.NETMVC应用程序,我在路由aspx文件时遇到了一点问题—一般来说,这是可行的
假设我有一个razor页面,我想,例如,从数据库中打开特定行并显示它,它非常简单,我只需在index.cshtml中编写:

@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表单)来做这件事似乎是个问题。控制器是否必须不同,路由代码是否必须不同?或者基本上是可能的?以及想法或提示?

Url.Action
helper不会创建Web表单页面的Url,因为它们不是操作。你需要做一些类似的事情

@Url.Content("~/somefolder/Details.aspx?id=" + item.DB_Id)
Url.Content
用于创建静态文件的Url,但也适用于Web表单

您可以创建自己的帮助器,以便更干净地处理参数。我现在没有时间实施,但您可以创建如下内容:

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

助手可以使用反射生成适当的查询字符串并将其附加到URL。

查看是否有帮助you@ElmerDantas我甚至无法用.cshtml中的parametr打开.aspx文件。有可能吗?它是否只可行.aspx->.aspx?以及.aspx文件如何获得该参数并转到特定数据库?另一个可能对您有所帮助。我从来没有必要这样想……所以我不知道这是否可能。我很好奇,开始阅读,看看是否有可能实现it@ElmerDantas如果我可以问一下,你个人的喜好是什么。CSHTMLMVC或WebForms.aspx?肯定是.cshtml。我以前使用.aspx,但当我有机会时,我改变了do.cshtml MVC。在我看来,webForms.aspx与MCV.cshtml的关系太混乱了。谢谢你,伙计!我花了两天时间试图通过改变路线、控制器等来让它工作。现在我得到了我想要的@如果您注册了Web表单页面路由,则可以使用内置帮助器。我不确定,我从来没有试过。见和。如果我是你,我宁愿放弃所有的MVC和Web表单,但是如果你已经有了可以做你想做的事情的Web表单页面,这可能会很有用。