だから私はこのコントローラーアクションを持っています:
public ActionResult Categories(int typecode)
{
// code removed
}
このルート:
routes.MapRoute(null,
"{controller}/{action}/{typecode}",
new { controller = "Search", action = "Categories", }
);
ルートを呼び出すためのこのリンク:
@Html.ActionLink("Ga", "Categories", "Search", new { typecode = 16860 }, null)
これを使用すると、私の URL は: になりますがhttp://localhost:50033/Search/Categories?typecode=16860
、すべての出現箇所を に変更すると機能typecode
し、次のid
URL が得られます:http://localhost:50033/Search/Categories/16860
したがって、typecode ではルートが機能せず、id では機能します。私は何を間違っていますか?ありがとう!
編集:
私は十分に明確ではなかったと思いますが、私のGlobal.asax.cs
ファイルにはこれがあります:
public static void RegisterRoutes(RouteCollection routes)
{
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.MapRoute("TypeCode",
"Search/Categories/{typecode}",
new { controller = "Search", action = "Categories" }
);
}
これは、私の場合よりも 1 つのルートにすぎませSearchController
ん。次のCategories
アクションがあります。
public ActionResult Categories(int typecode)
{
// Irrelevant code removed
}
したがって、パラメーターはルートパラメーターとまったく同じです。次のリンクがあります。
@Html.ActionLink("Ga", "Categories", "Search", new { typecode = 16860 }, null)
また、正確にルートパラメーターを使用していますが、生成されたリンクは次http://localhost:50033/Search/Categories?typecode=16860
のとおりです。したがって、それは私が望むものではありません。
今、次のように、すべてのタイプコードの出現を置き換えると:
public static void RegisterRoutes(RouteCollection routes)
{
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.MapRoute("TypeCode",
"Search/Categories/{id}",
new { controller = "Search", action = "Categories" }
);
}
public ActionResult Categories(int id)
{
// irrelevant code removed
}
@Html.ActionLink("Ga", "Categories", "Search", new { id = 16860 }, null)
できます!だから私はすべてを置き換えました.これ以上のルートはありません.3つのtypecode
オカレンスをid
.
どうしてこれなの?誰でもこれで私を助けてくれますか? 前もって感謝します!