1

Project と Tag の 2 つのコントローラーがあり、どちらにも create ビューと get ポスト メソッドがあります。

プロジェクト作成ビューから、タグ作成ビューでダイアログを開くタグを追加するオプションがあります。

タグを追加すると、タグコントローラーの作成ポストメソッドに移動し、そこに送信したコントローラーアクションを取得できるようにしたい(この場合はプロジェクト)。UrlReferer クラスを見てきましたが、コントローラーを取得するより良い方法はありますか?

これが必要な理由は、次のようなことができるようになりたいからです

            if (Request.IsAjaxRequest())
            {
                if (REFERER CONTROLLER != Tag Controller)
                {
                       return Json(new { Item = item, Success = true });
                }
                else 
                {
                    return RedirectToAction("Index");
                }
             }

基本的に、ダイアログが別のコントローラーにある場合は、新しい値のjsonを返します。それ以外の場合は、インデックスアクションを返します

編集は、このアイデアを再び使用することになりました。行きました

if (Url.IsLocalUrl(Request.UrlReferrer.AbsoluteUri) && !String.Equals(Request.UrlReferrer.LocalPath.TrimEnd('/'), Url.Action("Index"), StringComparison.OrdinalIgnoreCase))
{
    return Json(new { Item = item, Success = true, Field = String.Format("#Selected{0}s", ControllerName) });
}
return Json(new { Success = true, Field = "#mainContent", Url = Url.Action("Index") });
4

1 に答える 1

4

いくつかのオプションがあります。

  1. 参照URLを確認できます(参照URL文字列を取得し、コントローラー名を解析してから、クラス内の何らかのメソッドまたはプロパティにアクセスする必要がない限り、コントローラークラスのインスタンスを作成しても意味がありません。文字列を見てください)。
  2. コントローラ名を含む非表示の入力を含めることができます。
  3. セッションに値を保存して(これはやり過ぎのようです。このためにCookieが作成されることを忘れないでください)、ユーザーがどのページから来たかを記憶することができます。

オプション1と2は、サーバーが値を受け取る前に改ざんされる可能性があります。

于 2012-04-17T16:11:50.473 に答える