我正在通过串联许多字符串变量来构建返回URL,但是为了进行测试,我使用了测试字符串。
它可以在帐户控制器的登录功能中完美运行:
[HttpPost]
public async Task<ActionResult> Login(LoginViewModel model, string returnUrl)
{
/* irrelevant code lines */
return Redirect( "SuiviFinancier/Niveau2?unitAdm=012" /*returnUrl*/);
}
此重定向到正确的路线: / SuiviFinancier / Niveau2?unitAdm = 012
但是该重定向功能在另一个控制器中使用,使其自动在字符串(例如)之前添加控制器名称:
public class paramsVisuelController : Controller
{
[HttpPost]
public ActionResult Options(ParamsVisuel model)
{
return Redirect( "SuiviFinancier/Niveau2?unitAdm=012" );
}
}
此处的输出路径为: / paramsVisuel / SuiviFinancier / Niveau2?unitAdm = 012
那是为什么? MVC是在我的字符串之前添加控制器名称吗?但是我不想要那个。这是一条包含控制器的完整路由,为什么我要在其之前添加当前控制器名称?这是无意义的。
说明:HTTP 404。
URL要求:/ paramsVisuel / SuiviFinancier / Niveau2
答案 0 :(得分:1)
通常,应该使用此功能进行重定向:
RedirectToAction("Niveau2", "SuiviFinancier", new { unitAdm = 012 });
这是经典的MVC重定向到控制器中动作的方法。
但是,如果由于某种原因,您需要redirect()
函数才能正常工作,请不要忘记以完整的路径开始使用斜线开头的字符串:
return Redirect( "/SuiviFinancier/Niveau2?unitAdm=012");
或斜线和斜线:
return Redirect( "~/SuiviFinancier/Niveau2?unitAdm=012");