web-dev-qa-db-ja.com

ASP.NET MVC 4-コントローラーの終了後に同じページにリダイレクトする

ページから私は次を持っています:

@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" />
}

そのため、コントローラーは正しく呼び出されます。

public ActionResult AddEntry(string ip, int TypeId, string returnUrl)
{
    // Do some stuff

    return Redirect(returnUrl);
}

私の問題は、returnUrlがnullになり、コントローラーを呼び出したのと同じページにリダイレクトしないことです。アイデア?

使用:ASP.NET MVC 4 Razor

16
user1624552

Request.QueryStringメソッドを使用して、サンプルからURLから値を取得できます。

@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" />
}

そして、コントローラーで、パラメーターstring returnUrlとして受け取ります。

12
Felipe Oriani

詳細ページなどに戻り、クエリを使用して同じページに戻る必要がある場合にも、これを行うことができます。

return Redirect(Request.UrlReferrer.PathAndQuery);
38
vidriduch

コントローラーのRequestから参照URLを取得できます。

public ActionResult AddEntry(string ip, int TypeId, string returnUrl)
{

     // Do some stuff
     string url = this.Request.UrlReferrer.AbsolutePath;

     return Redirect(url);
}

これにより、呼び出し元のURLに正確にリダイレクトされます。

13
Fals

コントローラークラスでRequest.UrlReferrerを使用します。ページからURLを渡す必要はありません。

   public ActionResult AddEntry(string ip, int TypeId)
    {

         // Do some stuff

         return Redirect(Request.UrlReferrer.ToString());
    }
8
@using (Html.BeginForm("AddEntry", "Configure", new { returnUrl = this.Request.RawUrl }))
{
    @Html.TextBox("IP")
    @Html.Hidden("TypeId", 1)
    <input type="submit" value="@Resource.ButtonTitleAddComponent" />
}

このようにコードを変更します

0
Krishan