4

属性 multiple="multitple" を持つコントロールを使用するフォームがあります。これにより、ユーザーはコントロール内の複数の項目を選択できます。

フォームが get メソッドで送信されると、要求されたページの URL に同じ名前の複数のパラメーターが含まれます。選択したアイテムごとに 1 つ。たとえば、次のようなものを取得できます。

/logs?levels=DEBUG&levels=INFO&levels=FATAL

私のコントローラーでは、アクションは次のような List 型のパラメーターの値を正しく受け取ります。

public ActionResult Index(List<String> levels)
{
   ...
}

ここで、何らかの理由で、levels パラメーターに複数の値を含むこのアクションへのリンクを作成する必要があります。Html.ActionLink を使用してそのようなリンクを作成するにはどうすればよいですか? 私はこのようにしてみました:

@Html.ActionLink((p + 1).ToString(), "Index", new {
    levels = ViewBag.selectedLevels_AS_A_GENERIC_LIST_OF_STRINGS,
    itemsPerPage = ViewBag.itemsPerPage
});

リストはまったく展開されず、代わりに .ToString() が呼び出され、結果がリンクに挿入されるため、機能しません。もちろん、「レベル」という名前の複数のプロパティを持つオブジェクトを作成する方法もありません。

使用しているフォームによって生成されるような ActionLink を作成するにはどうすればよいですか?

ありがとう

4

1 に答える 1

3

このようなものがうまくいくはずです。

@Html.ActionLink((p + 1).ToString(), "Index", new RouteValueDictionary{
    {"levels[0]", selectedLevels_AS_A_GENERIC_LIST_OF_STRINGS[0]},
    {"levels[1]", selectedLevels_AS_A_GENERIC_LIST_OF_STRINGS[1]},
    {"itemsPerPage", ViewBag.itemsPerPage}
});
于 2012-07-23T21:57:22.570 に答える