【问题标题】:Redirection in aspx page of MVC application?在 MVC 应用程序的 aspx 页面中重定向?
【发布时间】:2017-11-17 18:53:54
【问题描述】:

我正在用 MVC 系统替换一个用传统 asp.net 编写的网站

我们使用且无法轻易更改的第三方系统期望能够使用该格式的 url

http://website url here/?searchtype=both&param1=value1&param2=value2

我需要把它重定向到

http://website url here/Home/FindByIdentifier?searchtype=both&param1=value1&param2=value2

我该怎么做?它是一种重定向到行动的方式?

如果这很复杂,那么这种事情是否可能在现在托管系统的 Azure 中作为应用服务来实现?

它基本上是让第三方系统仍然可以正常运行的情况,就像没有任何改变一样

我的新应用程序使用带有 Razor 视图的 C# MVC5

保罗

【问题讨论】:

  • 自定义路由应该可以很好地为您处理。
  • 有没有什么你能想到的例子?

标签: asp.net asp.net-mvc razor


【解决方案1】:

这样的东西添加到您的家庭控制器中

public ActionResult Here()
{
   var url = $"Home/FindByIdentifier{Request.Url.Query}";
   return Redirect(url);
}

【讨论】:

  • 我可以将此方法称为搜索吗?我现在无法检查
  • 这里最重要的问题是我的旧系统希望找到一个名为 index.aspx 的文件?此处列出的解决方案涉及修改旧系统不会调用的我的家庭控制器?这将调用 index.aspx
【解决方案2】:

很抱歉,路由规则显然忽略了get 参数。我已经尝试将正则表达式用作约束,它确实忽略了get 参数。

我只想使用路由来正确地路由请求。如果有人知道如何使用 get 参数执行此操作,请告诉我。

所以,即使我尝试不使用重定向替代方案,我认为这是迄今为止最好的选择。 在您的HomeController 上考虑这一点:

    public IActionResult Index()
    {
        if (Request.QueryString != null && !string.IsNullOrEmpty(Request.QueryString.Value) && System.Text.RegularExpressions.Regex.IsMatch(Request.QueryString.Value, @"^\?searchtype\=both(\&.+\=.+)*$"))
            return Redirect($"/home/FindByIdentifier{Request.QueryString.Value}");

        return View();
    }

    public IActionResult FindByIdentifier()
    {
        var getParameters = Request.QueryString.Value;//?searchtype=both&param1=value1&param2=value2
        return View();
    }

【讨论】:

    猜你喜欢
    • 2014-10-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-12-12
    • 2010-11-08
    • 1970-01-01
    • 1970-01-01
    • 2015-03-12
    相关资源
    最近更新 更多