6

.net4.0でMVCを使用しています。基本的なHtml.ActionLinkがあり、複数のパラメーターをコントローラー/アクションに渡したいです。

ActionResultをデバッグするたびに、パラメーターの1つだけが通過し、もう1つはnullになります(どちらが最初かによって異なります)。これで、「リーグ」オブジェクトを通過させることができるので、複雑なオブジェクトを渡すことができることがわかりました。ただし、パラメータの1つだけがいつでも成功する理由はわかりません。

ビュー内のコード:(ViewBagについて嫌がらせをしないでください。人気がないことはわかっています。また、リーグは複雑なオブジェクトです)

@Html.ActionLink("Sort By WeeK", "Sort", "Schedule",
                 new { league = ViewBag.League, sortType = "Week" }, null)

コントローラのコード:(ここでは驚きはありません)

public ActionResult Sort(League league, string sortType)
{
    //Do some stuff here
    return View("Schedule");
}

答えはルーティングを中心に展開すると思います。それは私の2番目の質問に私をもたらします。このタイプのActionLink(アクション/コントローラー/複雑なオブジェクトと単純なオブジェクトのコレクション)を、常に新しいマップルートを追加せずに機能させるにはどうすればよいですか。解剖学的に同一のルートマップをglobal.asaxに常に追加する必要がないように、追加できる汎用/ワイルドカードルートマップはありますか。または、アクションに渡すオブジェクトのタイプにある程度の柔軟性を持たせて、正確な署名を事前に定義できないようにしたい場合もあります。

このトピックに関する複数の投稿を見ましたが、どれも私の質問に答えませんでした。

4

3 に答える 3

4

null パラメータが原因で混乱している可能性があると思います。これを試して:

@Html.ActionLink("Sort By WeeK", actionName:"Sort", controllerName: "Schedule", routeValues: new { league = ViewBag.League, sortType = "Week" }, htmlAttributes:null)
于 2012-10-25T21:50:35.080 に答える