1

私はいくつかの製品を販売する会社向けのアプリケーションを開発しています。このアプリケーションは、製品の変更と返品を管理する責任があります。変更と返品にはさまざまなルールがありますが、「画面/ビュー」はすべて同じです。このアプリケーションには、タイプごとに異なるURLが必要です。例えば:

www.company.com/change

www.company.com/return

アプリケーションにもLoginページが必要です。

www.company.com/CHANGEにアクセスすると、ユーザーはログインページにリダイレクトされ、このページにはchangeテキスト付きのラベルが表示されます。

www.company.com/RETURNにアクセスすると、ユーザーはログインページにリダイレクトされ、このページにはreturnテキスト付きのラベルが表示されます。

問題は、このタイプをページ全体で永続化する方法です。ユーザーがアプリケーションとログアウトの認証領域内にいる場合は、正しいラベルテキストを使用して正しいログインページに戻る必要があることを思い出してください。

タイプをSessionに保存しようとしましたが、セッションが終了すると、ログインページにどのようにパラメータを渡す必要があるかを知ることができません(変更または戻る)

Global.asax私も試しました。次のように、タイプを永続化するように新しいルートを作成します。

routes.MapRoute(
    "qwert", // Route name
    "{type}/{controller}/{action}/{id}", // URL with parameters
    new { controller = "Login", action = "Index", id = UrlParameter.Optional } // Parameter defaults
);

しかし、このURLは、たとえば「xxx / home/list」と一致します。

return/abc/abc 

change/abc/abc 

合わせる。

プロセスの最後に、このタイプのデータベースにレコードを保持します。

どうすればこの状況を解決できますか?

4

1 に答える 1

1

質問には少し説明が必要ですが、正しく理解できれば、 {type} パラメータを含むすべてのリンクと URL を単純に処理します。

私は小さなテストを行いましたが、得られたものは次のとおりです。

global.asax:

public static void RegisterRoutes(RouteCollection routes)
{
    routes.IgnoreRoute("{resource}.axd/{*pathInfo}");

    routes.MapRoute(
      "qwert", // Route name
      "{type}/{controller}/{action}/{id}", // URL with parameters
      new { controller = "Login", action = "Index", type = "", id = UrlParameter.Optional } // Parameter defaults
    );
}

LoginControllerでは、次のようなタイプを取得できます。

public ActionResult Index(string type)
{
    return View();
}

ここで説明されているように、セッションの有効期限のカスタム属性を作成し、ユーザーを適切なページ www.company.com/{type} に戻すことができます。

于 2013-01-16T14:32:59.267 に答える