Check your T4MVC ProductsController.generated.cs file for a Search() method that takes zero parameters. It sounds like you won't find it there, but as David Ebbo posted above, it should have been generated under most circumstances. It is especially strange considering that the method you pasted here is decorated as virtual, which probably happened at some point previously when it was tagged by T4MVC.
So, to fix it, you might try deleting your *.generated.cs files and regenerating them, by right-clicking the T4MVC file in the VS IDE and selecting "Run Custom Tool".
If the zero-param method still isn't generated but other are, inspect what might be unusual about your Search method. You might be doing something unsupported by T4MVC. This happened to me today for a method with a String return. I had to either use the null parameter hack or return a ContentResult, as per In MVC, how do I return a string result?, which David kindly referenced at T4MVC and Ajax method with parameter .