私の ASP.NET MVC 4 アプリケーションでは、複数のタグでフィルター処理できます。HTML では、次のようになります。
<form>
<label>
<input type="checkbox" name="tag" value="1">One
</label>
<label>
<input type="checkbox" name="tag" value="2">Two
</label>
<label>
<input type="checkbox" name="tag" value="3">Three
</label>
<input type="submit" name="action" value="Filter">
</form>
1 番目と 3 番目のチェックボックスをオンにすると、クエリ文字列が次のようにシリアル化され?tag=1&tag=3
、コントローラーは次のクラスの型を持つオブジェクトを適切に渡します。
// Filter class
public class Filter {
public ICollection<int> tag { get; set; }
}
// Controller method
public ActionResult Index(AdFilter filter)
{
string url = Url.Action("DoFilter", filter);
// url gets this value:
// "/controller/Index?tag=System.Collections.Generic.List%601%5BSystem.Int32%5D"
// I would expect this:
// "/controller/Index?tag=1&tag=3"
...
}
ただし、 を呼び出すとUrl.Action
、実際の値ではなく、コレクションの型名がシリアル化されます。
これはどのように行うことができますか?
MVC の標準インフラストラクチャは、入力として記述された複数のキーを処理できます。逆にそれを処理できる標準インフラストラクチャはありませんか? 何か不足していますか?