ページから私は次を持っています:
@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
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
として受け取ります。
詳細ページなどに戻り、クエリを使用して同じページに戻る必要がある場合にも、これを行うことができます。
return Redirect(Request.UrlReferrer.PathAndQuery);
コントローラーのRequest
から参照URLを取得できます。
public ActionResult AddEntry(string ip, int TypeId, string returnUrl)
{
// Do some stuff
string url = this.Request.UrlReferrer.AbsolutePath;
return Redirect(url);
}
これにより、呼び出し元のURLに正確にリダイレクトされます。
コントローラークラスでRequest.UrlReferrer
を使用します。ページからURLを渡す必要はありません。
public ActionResult AddEntry(string ip, int TypeId)
{
// Do some stuff
return Redirect(Request.UrlReferrer.ToString());
}
@using (Html.BeginForm("AddEntry", "Configure", new { returnUrl = this.Request.RawUrl }))
{
@Html.TextBox("IP")
@Html.Hidden("TypeId", 1)
<input type="submit" value="@Resource.ButtonTitleAddComponent" />
}
このようにコードを変更します