次のようなASP.NETMVCルートを設定したいと思います。
routes.MapRoute(
"Default", // Route name
"{controller}/{action}/{idl}", // URL with parameters
new { controller = "Home", action = "Index", idl = UrlParameter.Optional } // Parameter defaults
);
これは、次のようなリクエストをルーティングします...
Example/GetItems/1,2,3
...私のコントローラーのアクションに:
public class ExampleController : Controller
{
public ActionResult GetItems(List<int> id_list)
{
return View();
}
}
idl
問題は、 urlパラメーターをからにstring
変換しList<int>
て適切なコントローラーアクションを呼び出すために何を設定するかです。
文字列を前処理するために使用されたが、タイプを変更しなかった関連する質問をここで見ました。OnActionExecuting
ここではうまくいかないと思いますOnActionExecuting
。コントローラーをオーバーライドしてActionExecutingContext
パラメーターを調べると、ActionParameters
辞書idl
にnull値のキーが既に含まれていることがわかります。おそらく、文字列からList<int>
...thisへのキャストが試行されたためです。私が制御したいルーティングの一部です。
これは可能ですか?