如何重定向到MVC页面

时间:2014-01-25 10:06:15

标签: 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?&redirect_uri={3}&response_type=code&client_id={2}", info.BaseUrl, info.Version, info.ApiKey, info.Callback);
        return Redirect(url);
    }

这会将应用程序发送到另一个网站,但是当它的finsihed它需要返回到MVC应用程序。这是通过为其重定向提供回调网址来完成的。 回调需要指向我的MVC应用程序页面的链接

例如我也有这个动作:

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

它的位置是“〜/ Views / Home / Invoices.cshtml”并且它在本地主机上运行

我应该使用什么作为回调网址才能让它返回此页面?

3 个答案:

答案 0 :(得分:4)

您可以使用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帮助器。

答案 1 :(得分:1)

解决了,我在网址中添加了“/ Views /”。

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

解决方案:)

答案 2 :(得分:0)

只是强调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");
 }

希望这能澄清情况。