0

私の最初の ASP.NET ページ (ホームページ) で、ユーザーはいくつかの質問に答えて、[次へ] をクリックしたときにどのページに移動するかを決定します。

たとえば、次の表がユーザー入力の結果である場合:

PageID Parameter
1      16
2      1
3      20

次に、ナビゲートするページが 3 つあることをシステムに伝えます。

ホームページから、ユーザーが [次へ] をクリックすると、パラメーター 16 を渡して PageID = 1 のページ (1 つの特定の aspx ページ) に移動します。

そのページの最後で [次へ] ボタンをクリックすると、パラメーター 1 を渡す PageID = 2 のページにユーザーが移動し、再び [次へ] ボタンをクリックすると、ユーザーはパラメーター 20 で pageID = 3 に移動します。

最後に、この最後のページで [次へ] をクリックすると、最終ページに移動します。

このような動的なページ ナビゲーションを設計/コーディングする方法がわかりません。

何か案は?

4

1 に答える 1

0

RouteBaseクラスを継承することにより、カスタム Route 定義を持つことができます。

例 -

public class ParameterizedRoute : RouteBase
{
    const Dictionary<string,int> CustomParameters = new Dictionary<string,int> {{"1",16},{"2",1},{"3",20} };
    public override RouteData GetRouteData(HttpContextBase httpContext)
    {
        var routeData = new RouteData(this, new MvcRouteHandler());
        routeData.Values.Add("controller", "Datasheet");
        routeData.Values.Add("action", datasheetUrl.Action);
        var pageId = httpContext.Request.QueryString["PageId"].ToString();
        var param = CustomParameters[pageId];
        routeData.Values.Add("PageId", pageId);
        routeData.Values.Add("Parameter", param);
        return routeData;
    }
}

ここでは、あなたPageIdが経由して来て、値を渡すためにQueryString使用すると仮定します。RouteData

あなたglobal.asax.csApplication_Startでは、次のように追加できます

RouteTable.Routes.Add("CustomRoutes", new ParameterizedRoute());

ではParameterizedRoute、辞書を使用しましたが、ケースに応じて他のソースを追加できます。

于 2013-04-17T03:11:21.440 に答える