2009-07-06 20 views
0

私のアプリケーションでいくつかの異なるページからアクセスできるASP.NET MVCアプリケーションに共有ページがあります。ユーザーが共有ページでビジネスを終えた後に元のページに戻るようにするには、ユーザーがどこにいたのかを把握し、アプリにそこに行くように指示するにはどうすればよいでしょうか?共有ページから呼び出しページに戻る

私は、現在のページの履歴を使用するのonclick伝えることで共有ページ上のボタンを、キャンセルについては、このやっている注:

<input type="button" value="Cancel" onclick="if (history.length == 0) { window.location='<%=Url.Action("Index", "Home") %>' } else { history.back() }" /> 

をしかし共有ページの更新データならば、これは保存のために動作しません。元のページに表示されます。

答えて

1

二つの方法は、非表示の入力要素または現在のページのアドレスで引数として呼び出しページのURLを格納することです。これらはどちらもリフレッシュやナビゲーションのいくつかのステップで存続しますが、変数が次のページに確実に渡されるようにするだけです。

2

は、使用してみてください:私は考えることができる

System.Web.HttpContext.Current.Request.UrlReferrer 

http://msdn.microsoft.com/en-us/library/system.web.httprequest.urlreferrer.aspx

+0

複数のステップに戻る必要がある場合、つまりフォームの検証用に新しいページにリダイレクトする場合や、ナビゲートする複数のサブページがある場合は、これが有効です。 –

+0

最初にページを読み込んだときにセッションに保存することができます。 – Josh

0

このような問題は、BaseViewModelクラスを使用して、すべてのビューモデルを継承して、特定のページに役立つ情報を格納することをますます考えている理由です。私は最近、完全なクラス定義を考え出してきましたが、これらの目的のために、以下のプロパティを持つことはおそらくうれしいでしょう(別の質問への回答にこれの一部を投稿しました。ビット):

public class BaseModel 
{ 
    public string PageTitle { get; set; } 
    public string PageDescription { get; set; } 
    public string PageKeywords { get; set; } //maybe use a List<string> or string[] here 
    public string ReturnPage { get; set; } 
    //TBD: any other useful HTML page elements 
} 

そして私はこのから継承ビューモデル作成できますサービス層(好ましくは)またはコントローラに続い

public class RandomViewModel : BaseViewModel 
{ 
    RandomViewModel() 
    { 
     //set page properties 
    } 
} 

を(そこを実行する必要があり、避難所あなたがモデルを構築するときにReturnPageプロパティにアクセスすることになります(この例では、アクションでこれをやっていると仮定します):

public ActionResult RandomAction() 
{ 
    RandomViewModel model = _serviceLayer.GetRandomViewModel(); 
    model.ReturnPage = this.HttpContext.Request.UrlReferrer; 
    return View(model); 
} 

は、次にビューで、あなたはこれを行うことができるようになります:

<input type="button" value="Cancel" onclick="if (history.length == 0) { window.location='<%= Model.ReturnPage %>' } else { history.back() }" /> 

これは、ブレーンストーミングのすべてだけの種類ですが、私はそれが仕事だと思います。私がよく分かっていない唯一の大きな問題は、参照元の値を設定する場所です。私もしようとし、その要素からonclickイベントを取得し、可能であればヘッダーに設定します。

これが役に立ちます。

関連する問題