1

これは私のルーティングです:

routes.MapRoute(null,
    "shelves/{id1}/products/{action}/{id2}",
    new { controller = "Products", action = "List", id1 = "", id2 = ""});

考えは、次のようなことができるということです:

http://server/shelves/23/products/edit/14

また、シェルフ 23 の製品 14 を編集できます。Route Debugger で確認するとパスはルーティングと一致しますが、Route Debugger をオフにしてナビゲートしようとすると、HTTP 404 エラーが表示されます。なぜこれが起こっているのか誰にも分かりますか?

4

1 に答える 1

3

さて、最初に、そのid1 = ""行は問題になります。これは、最後にないものをオプションにすることはできないためです。

私は自分のシステムでそれを試しましたが、問題なく動作します。

これがルートです:

routes.MapRoute(
    "shelf-route",
    "shelves/{id1}/products/{action}/{id2}",
    new { controller = "Products", action = "List", id2 = "" }
);

これはコントローラーです:

public class ProductsController : Controller
{
    public string List(string id1, string id2)
    {
        return String.Format("ID1 = {0}, ID2 = {1}", id1, id2);
    }
}

私は次のようなURLを試しました:

http:// localhost:14314 / shelves / 23 / products / list / 14
http:// localhost:14314 / shelves / 23 / products

そして、彼らはうまく機能しました。

「編集」が含まれているURLを試したとき、編集アクションを実行したことを覚えていますか?編集アクションがない場合は、404を取得します。

于 2010-01-16T01:49:05.383 に答える