我目前有一个重定向到另一个网站的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”并且它在本地主机上运行
我应该使用什么作为回调网址才能让它返回此页面?
答案 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");
}
希望这能澄清情况。