所以,当我点击一个按钮时 - 它会点击提交。我设法让URL值很好。我的问题是,点击“RedirectingTime”功能不会重定向页面。它只是停止并显示一个空白页面。如果我把它放在提交函数中,那么它工作正常,但我不想将我的提交从void更改为重定向,因为我还想返回一个视图,如果它出错。 谢谢!
[HttpPost]
public void Submit(URLModel model)
{
string url = EmailEnd(model);
if (url != "0")
{
RedirectingTime(url);
}
else
{
Error();
}
}
public RedirectResult RedirectingTime(string url)
{
return Redirect(url);
}
public ActionResult Error()
{
return View();
}
根据以下答案 - 工作代码为:
[HttpPost]
public ActionResult Submit(URLModel model)
{
string url = EmailEnd(model);
if (url != "0")
{
return Redirect(url);
}
else
{
return View("Error");
}
}
}
答案 0 :(得分:1)
问题是您的Submit
操作返回void
。这将始终导致空白页面,因为void与EmptyResult
基本相同。
您点击的操作会返回结果,而不是您从中调用的操作。即使RedirectingTime
返回重定向,您的Submit
操作也永远不会返回 ,因此结果仍然是EmptyResult
而不是RedirectResult
。
此外,对于它的价值,显式设置操作的返回值的类型是非典型的,也是不必要的。实际上,每个MVC操作签名都应该只有ActionResult
作为返回。您可以实际返回任何内容,RedirectResult
,ViewResult
,JsonResult
等。
答案 1 :(得分:1)
您问题的关键在于您的提交操作未返回任何内容。它必须返回ActionResult(或ActionResult的派生形式)。如果要“重定向”到控制器上的其他操作,请使用RedirectToAction
。您可以使用或不使用参数,如下所示:
[HttpPost]
public ActionResult Submit(URLModel model)
{
string url = EmailEnd(model);
if (url != "0")
{
return RedirectToAction("RedirectingTime", new { url = url });
}
else
{
return RedirectToAction("Error");
}
}
public RedirectResult RedirectingTime(string url)
{
return Redirect(url);
}
public ActionResult Error()
{
return View();
}