Если вас беспокоит только то, что пользователь вводит URL-адрес, то использование атрибута HttpPost должно предотвратить вызов вашего действия таким образом: -
[HttpPost]
public ActionResult AddToCart(int id)
{
Это предотвращает GET-запросы от вызова этого действия. Тем не менее, это не мешает кому-то писать фиктивную форму и размещать сообщения в вашем действии.
Если вы беспокоитесь о чем-то более злонамеренном, вы можете захотеть внедрить некоторую форму токена против подделки, здесь есть некоторая полезная информация здесь .
EDIT
ОК, поэтому при перечитывании вопроса вышеприведенное не совсем решает вашу проблему.
Как насчет маршрута? если у вас что-то похожее на приведенное ниже, это предотвратит вызов ShoppingCart / Index и перенаправит пользователя на индекс вашего сайта.
routes.MapRoute(
"ShoppingCartIndex",
"ShoppingCart/Index",
new { controller = "Home", action = "Index" }
);