À partir d'une page, j'ai les informations suivantes:
@using (Html.BeginForm("AddEntry", "Configure", FormMethod.Get, new { returnUrl = this.Request.RawUrl }))
{
@Html.TextBox("IP")
@Html.Hidden("TypeId", 1)
<input type="submit" value="@Resource.ButtonTitleAddComponent" />
}
donc le contrôleur est appelé correctement:
public ActionResult AddEntry(string ip, int TypeId, string returnUrl)
{
// Do some stuff
return Redirect(returnUrl);
}
Mon problème est que returnUrl est nul et qu'il ne redirige pas vers la même page qui a appelé le contrôleur. Des idées?
Utilisation: ASP.NET MVC 4 Razor
Vous pouvez utiliser un Request.QueryString
méthode pour obtenir des valeurs de l'URL, par exemple:
@using (Html.BeginForm("AddEntry", "Configure", FormMethod.Get, null))
{
@Html.TextBox("ip")
@Html.Hidden("TypeId", 1)
@Html.Hidden("returnUrl", this.Request.RawUrl)
<input type="submit" value="@Resource.ButtonTitleAddComponent" />
}
Et dans votre contrôleur, recevez-le comme paramètre string returnUrl
.
vous pouvez également le faire si vous devez revenir à quelque chose comme la page de détails et revenir à la même page avec une requête:
return Redirect(Request.UrlReferrer.PathAndQuery);
Vous pouvez obtenir l'URL de référence à partir du Request
dans le contrôleur:
public ActionResult AddEntry(string ip, int TypeId, string returnUrl)
{
// Do some stuff
string url = this.Request.UrlReferrer.AbsolutePath;
return Redirect(url);
}
Cela vous redirigera exactement vers l'URL appelante.
@using (Html.BeginForm("AddEntry", "Configure", new { returnUrl = this.Request.RawUrl }))
{
@Html.TextBox("IP")
@Html.Hidden("TypeId", 1)
<input type="submit" value="@Resource.ButtonTitleAddComponent" />
}
Changez votre code comme ceci