Asp.net mvc 如何重定向到MVC页面

Asp.net mvc 如何重定向到MVC页面,asp.net-mvc,asp.net-mvc-4,Asp.net Mvc,Asp.net Mvc 4,我目前有一个MVC应用程序,可以重定向到另一个网站: public ActionResult Index() { //create instance of class to get info FreeAgentInfo info = new FreeAgentInfo(); //Create Url and redirect string url = string.Format(@"{0}/v{1}/approve_app

我目前有一个MVC应用程序,可以重定向到另一个网站:

public ActionResult Index()
    {
        //create instance of class to get info
        FreeAgentInfo info = new FreeAgentInfo();

        //Create Url and redirect
        string url = string.Format(@"{0}/v{1}/approve_app?&redirect_uri={3}&response_type=code&client_id={2}", info.BaseUrl, info.Version, info.ApiKey, info.Callback);
        return Redirect(url);
    }
这将把应用程序发送到另一个网站,但当它被发现时,它需要返回到MVC应用程序。这是通过为它提供一个回调url来实现的。 回调需要指向我的MVC应用程序页面的链接

例如,我还有以下动作:

public ActionResult Invoices()
    {
        return View();
    }
它的位置是“~/Views/Home/Invoices.cshtml”,它正在本地主机上运行

我应该使用什么作为回调url使其返回到此页面?

解决了这个问题,我在url中添加了“/Views/”

"http://localhost:52006/Home/Invoices"
这就是解决方案:)

解决了它,我在url中添加了“/Views/”

"http://localhost:52006/Home/Invoices"

这就是解决方案:)

您可以使用Url帮助器为回调生成一个绝对Url,并将其传递到外部网站:

string callback = Url.Action("Invoices", "MyController", null, Request.Url.Scheme);
然后传递此回调:

string url = string.Format(
    @"{0}/v{1}/approve_app?&redirect_uri={3}&response_type=code&client_id={2}", 
    info.BaseUrl, 
    info.Version, 
    info.ApiKey, 
    callback
);
return Redirect(url);
通过使用Url帮助器,可以保证无论您配置了什么路由,它都会为控制器操作生成有效的Url。另外,如果有一天您更改了路由,那么您不需要记住,在调用外部网站时,您有一些自定义代码来计算此回调


因此,永远不要在ASP.NET MVC应用程序中硬编码URL。在处理url帮助程序时,请始终使用url帮助程序。

您可以使用url帮助程序为回调生成绝对url,并将其传递到外部网站:

string callback = Url.Action("Invoices", "MyController", null, Request.Url.Scheme);
然后传递此回调:

string url = string.Format(
    @"{0}/v{1}/approve_app?&redirect_uri={3}&response_type=code&client_id={2}", 
    info.BaseUrl, 
    info.Version, 
    info.ApiKey, 
    callback
);
return Redirect(url);
通过使用Url帮助器,可以保证无论您配置了什么路由,它都会为控制器操作生成有效的Url。另外,如果有一天您更改了路由,那么您不需要记住,在调用外部网站时,您有一些自定义代码来计算此回调


因此,永远不要在ASP.NET MVC应用程序中硬编码URL。处理url帮助时始终使用url帮助。

为了强调RedirectToAction()告诉MVC重定向到指定的操作,而不是呈现HTML,它的行为类似于ASP.NET WebForm中的Response.redirect()

public ActionResult Index()
{
  return View();
}

[HttpPost]
public ActionResult Index(string Name)
{
   ViewBag.Message = "Hello Word";
   //Like Server.Transfer() in Asp.Net WebForm
   return View("MyIndex");
}

public ActionResult MyIndex()
{
  ViewBag.Msg = ViewBag.Message; // Assigned value : "Hello World"
  return View("MyIndex");
 }

希望这能澄清问题。

为了强调RedirectToAction()告诉MVC重定向到指定的操作,而不是呈现HTML,它的行为类似于ASP.NET WebForm中的Response.redirect()

public ActionResult Index()
{
  return View();
}

[HttpPost]
public ActionResult Index(string Name)
{
   ViewBag.Message = "Hello Word";
   //Like Server.Transfer() in Asp.Net WebForm
   return View("MyIndex");
}

public ActionResult MyIndex()
{
  ViewBag.Msg = ViewBag.Message; // Assigned value : "Hello World"
  return View("MyIndex");
 }

希望这能澄清问题。

我想将所有与此相关的信息保存在单独的类中,该类不接受.Action-这是一个很好的解决方案,比我的想法更安全。在这种情况下,只需将此类作为参数UrlHelper,您就可以从控制器操作中传递它。因为这个类处理的是url,所以依赖url帮助程序是非常有意义的。否则我甚至不想去想你在做什么。我实现了你的url帮助解决方案,谢谢你的帮助:)我想把所有与此相关的信息保存在单独的类中,它不接受.Action-这是一个很好的解决方案,比我的想法更安全。在本例中,只需让此类将一个UrlHelper作为参数,您将从控制器操作传递该参数。因为这个类处理的是url,所以依赖url帮助程序是非常有意义的。否则我甚至不想去想你在做什么。我已经实现了你的url帮助解决方案,谢谢你的帮助:)