Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-mvc/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 旧WebForms的ASP.Net核心MVC解析查询?_C#_Asp.net Mvc_Asp.net Core - Fatal编程技术网

C# 旧WebForms的ASP.Net核心MVC解析查询?

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 => {

是否可以在MVC ASP.Net Core中解析WebForms站点的查询并将其路由到控制器

理由是我们正在重新编写一个旧的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: 所以我似乎对你有意见?正在查询中

如果我使用这个url
oursite/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)您是否尝试将旧的默认路由放在第一位?