在MVC应用程序的aspx页面中重定向?

时间:2017-11-17 18:53:54

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

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

我们使用且无法轻易更改的第三方系统希望能够使用格式的网址

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

我需要将其重定向到

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

我该怎么做?它的重定向行动?

如果这很复杂,那么现在可以在Azure中作为应用服务来托管系统吗?

它基本上是使第三方系统仍然运行的情况,好像没有任何改变

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

2 个答案:

答案 0 :(得分:0)

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

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

答案 1 :(得分:0)

很抱歉,显然,路由规则会忽略get个参数。我已经尝试将regex作为约束应用,它确实忽略了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();
    }