web-dev-qa-db-fra.com

ASP.NET MVC 4 - Rediriger vers la même page après la fin du contrôleur

À 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

16
user1624552

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.

12
Felipe Oriani

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);
38
vidriduch

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.

13
Fals
@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

0
Krishan