2

MVCアプリケーションから次のURLを要求すると、常にHomeControllerにリダイレクトされます。

www.mymvcapp.com/?m=standardvalue&a=someothervalue&code=12345

今、私はGlobal.asax.csリクエストルートを編集することでこれを克服しようとしています。

routes.IgnoreRoute(".*m=standardvalue.*");

したがって、結果として期待するのは、URLに「m = standardvalue」が含まれている場合は常に、HomeControllerに移動しないということです。私がこれを完全に間違っているのかもしれません。私の問題を解決するための良い方向に私を向けることができる誰かです。

追加情報:リンクはMVCのようには見えません。これは、Apllication Request Routing(IIS7)がこのURLをキャッチし、PHPを実行しているWebサーバーに変換するためです。

4

1 に答える 1

1

ここで必要なのはルート制約です。要求されたURLにターゲットコントローラーがなく、標準値に等しい変数mを持つクエリ文字列が含まれている場合、制約はtrueを返します。

public class DefaultWithoutParamsConstraint : IRouteConstraint
{
    public bool Match(HttpContextBase httpContext,
                      Route route,
                      string parameterName,
                      RouteValueDictionary values,
                      RouteDirection routeDirection)
    {
        return values[parameterName] == null &&
               httpContext.Request.QueryString["m"] == "standardvalue";
    }
}

次に、この制約を無視リストに追加します。

routes.IgnoreRoute(
    "{*controller}",
    new { controller = new DefaultWithoutParamsConstraint() }
);
于 2012-06-03T17:22:55.463 に答える