我是asp.Net MVC5的开发者。
在我的MVC项目中,我使用Web服务返回一个URL来自另一个域的字符串URL。
我想转到这个网址。
为了清楚自己: 客户端填写表单主页并按提交,在服务器端我发送请求Web 使用表单中的参数进行服务,并使用另一个域获取URL,此URL需要作为第二页提供给客户端
public class HomeController : Controller
{
public ActionResult Home()
{
return View("~/Views/Home/home.cshtml");
}
[HttpPost]
[ValidateAntiForgeryToken]
public ActionResult doSomething(Something obj)
{
//use web service and get string URL
string urlString = ;// get from the web service response.
return View();// want write in the ();
}
}
答案 0 :(得分:1)
这对于MVC中的导航也很有用。
(YourActivityName)Forms.Context;
答案 1 :(得分:0)
该网址来自其他网站不是同一个网域
如果要重定向到外部网址,则需要使用Redirect()
方法。
像这样:
[HttpPost]
[ValidateAntiForgeryToken]
public ActionResult DoSomething(Something obj)
{
// Use web service to get the string URL
string urlString = ...;
if (string.IsNullOrEmpty(urlString))
{
// If the urlString is empty, take the user to an Error View.
return View("Error");
}
// Redirect the user to the urlString
return Redirect(urlString);
}
我建议也做一些检查以确保URL绝对有效。您可以使用Uri
static
方法IsWellFormedUriString()
执行此操作 - 这会返回bool
。
像这样:
if (!Uri.IsWellFormedUriString(urlString, UrlKind.Absolute))
{
// If the urlString is not a well-formed Uri, take the user to an Error View
return View("Error");
}
// Redirect the user to the urlString
return Redirect(urlString);
或者,如果您要重定向到内部操作,请使用RedirectToAction()
方法,如@ankur所示。
另外注意:确保您的C#方法名称使用PascalCase
。为局部变量/私有字段保留camelCase
。
所以,你会使用DoSomething(...)
,而不是doSomething(...)
(我已经在我的例子中做过这个)。
希望这有帮助。