1

ルーティング機能を使用するように asp.net Web フォーム ベースの Web サイトを更新しようとしていますが、userControl.ascx 内の 1 つのエラーを修正できません。

を使用してメイン ページのクエリ文字列値にアクセスできますRouteData.Values["language"].ToString()が、ユーザー コントロール内でクエリ文字列値を使用する必要がある場合も同様に失敗します。

私も使ってみましたHttpContext.Current.Request.RequestContext.RouteData.Values["language"].ToString();

しかし、運がありません。

以下は、クエリ文字列をキャッチしようとしているコードサンプルです

int LangID = 1;
int ArticleID = 0;
int PageID = 0;
int IssueID = 0;
int CategoryID = 0;
string language = string.Empty;

   if (string.IsNullOrEmpty(Request["PageID"]))
    {

        language = HttpContext.Current.Request.RequestContext.RouteData.Values["language"].ToString();
        LangID = Helper.GetLanguageID(language);
        ArticleID = int.Parse(HttpContext.Current.Request.RequestContext.RouteData.Values["aid"].ToString());
        PageID = int.Parse(HttpContext.Current.Request.RequestContext.RouteData.Values["PageID"].ToString());
        IssueID = int.Parse(HttpContext.Current.Request.RequestContext.RouteData.Values["issue"].ToString());
    }
    else
    {
        language = Request["language"];
        LangID = Helper.GetLanguageID(language);
        ArticleID = int.Parse(Request["aid"]);
        PageID = int.Parse(Request["PageID"]);
        IssueID = int.Parse(Request["issue"]);
    }

このステートメントに対して次のエラーが発生します language = HttpContext.Current.Request.RequestContext.RouteData.Values["language"].ToString();

エラーメッセージ:

System.NullReferenceException was caught
  Message=Object reference not set to an instance of an object.
  Source=App_Web_odw0cnkk

この問題について、またはこの問題を回避する方法について、助けていただければ幸いです

4

1 に答える 1

2

以下のように使用します。

HttpContext.Current.Request.RequestContext.RouteData.Values["XXXXXX"]

Thx: https://social.msdn.microsoft.com/Forums/tr-TR/c53d8d15-19d0-455b-b5a9-3d64d0793f99/usercontrol-iinde-routedatavaluesid?forum=aspnettr&prof=required

于 2016-02-03T09:01:03.200 に答える