オプションの「id」パラメータを持つページルートがあります。そのように定義:RouteDataのオプションパラメータを確認できないようです
routes.MapPageRoute(null,
"projects/{operation}/{id}",
"~/Projects/ProjectWizard.aspx",
true,
new RouteValueDictionary(new
{
operation = "new",
id = UrlParameter.Optional
}),
new RouteValueDictionary(new
{
operation = @"new|edit",
id = @"\d*"
})
);
ルートが正常に動作しますが、私はページを取得するとき、私は整数に変換しようとしたときに私のコードが失敗し、その後、オプションの「ID」パラメータは含まれていない場合。
var operation = RouteData.Values["operation"].ToString();
var projectId = RouteData.Values.ContainsKey("id") ? Convert.ToInt32(RouteData.Values["id"]) : 0;
これは、限り、私はこのようなルートでIDを渡すよう素晴らしい作品:
http://webapp/projects/edit/123
projectId
は、それがあるべきと同じように123に等しいです。しかし、私はID含まれていない場合:
http://webapp/projects/new
ルートはページの罰金に行くのが、私はこのエラーを取得:
Unable to cast object of type 'System.Web.Mvc.UrlParameter' to type 'System.IConvertible'.
中に鍵を見つけることができなければなりませんデータ値をルーティングしてからprojectId
にゼロを割り当てますが、そうではありません。私は "id"ルート値のnullをチェックするさまざまな方法を試し続けますが、それはあまり好きではないようです。どんな助けでも大歓迎です。