Ответ 1
Посмотрите на этот связанный вопрос о переполнении стека.
Причина, по которой это проблема, заключается в том, что метод Razor выполняется на веб-сервере во время рендеринга, когда javascript выполняется в браузере клиента во время выполнения.
Я решил бы это, сделав что-то вроде
var boxIdValue = 233;
var link = '@Html.ActionLink("Detail", "Show", "Boxes", new{boxId=-1}, null)'
link = link.replace('-1', boxIdValue);
var result = title + '<br />' + link;