2

私は ASP.NET MVC 3 を学ぼうとしてきましたが、ルーティングの側面以外は順調に進んでいます。

メインページに ActionLink があります:

@Html.ActionLink("Contracts", "List", "Contract", 
                 new { User.Identity.Name, page=1 })

これは、ContractController でこのメソッドにアクセスするためのものです。

public ViewResult List(string user, int page = 1)
{
    //snip
}

私のルートは次のとおりです。

 routes.MapRoute(
     null, 
     "Page{page}",
     new { Controller = "Contract", action = "List" }
 );

 routes.MapRoute(
     null,
     "Page{page}",
     new { Controller = "Contract", action = "List", user = "", page = 1 }
 );

 routes.MapRoute(
     "Default", // Route name
     "{controller}/{action}/{id}", // URL with parameters
     new { controller = "Home", action = "Index", id = UrlParameter.Optional } 
 );

コントローラーの「ホーム」でアクション「リスト」が見つからないため、リンクは 404 エラーを返します。これは明らかに、最初のルートのいずれも使用しなかったことを意味します。

ActionLink にパラメーターを追加しようとする前にすべてが機能していたので、基本的に何が間違っているのでしょうか?

どうもありがとう。

4

1 に答える 1

1

アレックス、

You're doing all the other bits absolutely correctly, however the actionlink has a missing parameter, try this for your actionlink:

@Html.ActionLink("Contracts", "List", "Contract", 
             new { User.Identity.Name, page = 1 }, null)

Adding the null as the final param (htmlAttributes) is all that's missing for you in this scenario (there are 9 overloads for Html.ActionLink, so it's VERY easy to miss the correct implementation).

于 2012-08-01T20:33:43.810 に答える