1

ルーティング構成に問題があると思われます。以下は私の状況です:

状況

エンティティに関連付けられている従業員を一覧表示するページがあります。エンティティ ページから、新しい従業員を追加できます。従業員が追加されると、クリックして従業員に関する詳細情報を取得できます。

作成と追加情報は正常に機能し、従業員が作成され、ID が通常どおり増加します。

問題

従業員が作成され、1 文字を超える ID が割り当てられた場合 (10 人を超える従業員で発生するか、ASP.NET が ID を約 1000 程度ジャンプすることを決定した場合)、特定の従業員の詳細ビューに 404 が表示され、次のように表示されます。

「お探しのリソースは削除されたか、名前が変更されたか、一時的に利用できません。」

0 ~ 9 の範囲の ID は問題なく動作しているように見えますが、ID が 1 文字 (つまり 10) を超えるとすぐに問題が発生します。

RouteConfig.cs

         routes.MapRoute(
             "EmployeeDetails",
             "{controller}/{id}-{Title}/{action}/{eid}",
             new { controller = "Farm", action = "EmployeeDetails", id = UrlParameter.Optional, title = UrlParameter.Optional, eid = UrlParameter.Optional},
             new { id = @"\d+", eid = @"\d" }
         );

FarmsController.cs

        public ActionResult Employee(int id = -1, int eid = -1)
        {

        if(id == -1 || eid == -1){
            RedirectToAction("Index","Home");
        }
        Farm f = db.Farms.Find(id);
        ViewBag.FarmName = f.Name;
        ViewBag.FarmUrl = f.getLink(true);
        Worker w = db.Workers.Find(eid);
        w.TimeSheets = w.TimeSheets.OrderByDescending(m => m.TimeSheetID).ToList();

        return View(w);
    }

すべての関連情報を提供していない場合はお詫び申し上げます。初めてのポスターです。他に何か知っておく必要がある場合はお知らせください。

乾杯

4

1 に答える 1

0

制約は次のようになります。

new { id = @"\d+", eid = @"\d+" }

現在、eid フィールドに正規表現 \d を使用しています。これは、単一のシンボルのみを意味します。

于 2014-07-16T06:27:39.357 に答える