I am not sure whether I am following you or not. But why do you even want to have a controller with that defined parameter?
It is not the controller that follows the URL, but instead the actions that do so. Your controller — if really needed — can hold member fields to hold those values, and they can be accessed in the action.
Also, you have the freedom to accept the placeholder variables in routing. I would do the same coding in the different manner, this seems somewhat easier and straightforward.
public MyController : Controller
{
public int index;
public MyController()
{
}
[Route("controller/{i}")]
public ActionResult someAction(int i)
{
}
}
Lastly, ASP.NET does support parameters, to understand how they work you can learn more about Dependency Injection to learn how framework would inject values for the parameters of a constructor.
ASP.NET MVC 4 Dependency Injection | Microsoft Docs[
^]
.net - How do constructor parameters of a MVC Controller get set? - Software Engineering Stack Exchange[
^]