C# 旧WebForms的ASP.Net核心MVC解析查询?
是否可以在MVC ASP.Net Core中解析WebForms站点的查询并将其路由到控制器C# 旧WebForms的ASP.Net核心MVC解析查询?,c#,asp.net-mvc,asp.net-core,C#,Asp.net Mvc,Asp.net Core,是否可以在MVC ASP.Net Core中解析WebForms站点的查询并将其路由到控制器 理由是我们正在重新编写一个旧的ASP.NETWebFrm应用程序到ASP.NET核心MVC中。 客户通过调用default.aspx页面并提供id来访问该网站 范例 oursite/Default.aspx?Id=6 这显然不起作用,因为默认值。aspx不存在并且不是控制器 更新1: 再挖一点,我就把它修好了 app.UseEndpoints(endpoints => {
理由是我们正在重新编写一个旧的ASP.NETWebFrm应用程序到ASP.NET核心MVC中。 客户通过调用default.aspx页面并提供id来访问该网站
范例oursite/Default.aspx?Id=6
这显然不起作用,因为默认值。aspx不存在并且不是控制器
更新1:
再挖一点,我就把它修好了
app.UseEndpoints(endpoints =>
{
endpoints.MapControllerRoute(
name: "default",
pattern: "{controller=Home}/{action=Index}/{id?}");
endpoints.MapControllerRoute("oldDefault",
"Default.aspx",
new {controller = "Home", action = "Default"});
});
这是可行的,但我不知道如何传入查询,即?Id=6
更新2:
所以我似乎对你有意见?正在查询中
如果我使用这个urloursite/Default.aspxId=6
执行以下操作,我将获得提取并传入参数的路由
endpoints.MapControllerRoute("oldDefault",
"Default.aspx{id}",
new {controller = "Home", action = "Default"});
但是我需要这个?在url中。所以如果我试一下这个
endpoints.MapControllerRoute("oldDefault",
"Default.aspx?{id}",
new {controller = "Home", action = "Default"});
我得到以下错误
RoutePatternexException:文本部分“Default.aspx”无效。文字部分不能包含“?”字符
当前解决方案
目前,实现此功能的最佳方法是忽略尝试映射参数,而是在操作中从HttpRequest获取此参数
endpoints.MapControllerRoute("oldDefault",
"Default.aspx",
new {controller = "Home", action = "Default"});
public class HomeController : Controller
{
public IActionResult Default()
{
if (Request.Query.ContainsKey("Id"))
{
// Do something...
}
else
{
// Do something....
}
}
}
Id作为控制器操作中的参数?是的。我的问题似乎是和谁有关?在查询中,请参阅my update 2I,我的意思是您可以将id作为操作方法中的参数,而不是路由中的参数。我可以吗?public IActionResult Default(字符串id)是否尝试将旧的默认路由放在第一位?id作为控制器操作中的参数?是的。我的问题似乎是和谁有关?在查询中,请参阅my update 2I,我的意思是您可以将id作为操作方法中的参数,而不是路由中的参数。我可以吗?public IActionResult Default(字符串id)您是否尝试将旧的默认路由放在第一位?