Я наконец выяснил источник своей проблемы и обнаружил, что в моем исходном вопросе отсутствовала критическая деталь. Я публикую это как ответ на случай, если кто-то столкнется с этой же проблемой, и поэтому у меня будет достаточно места, чтобы расширить мои объяснения. Мои среды разработки и тестирования имеют разные пути к веб-приложению. По этой причине я написал функцию JavaScript для получения базового URL-адреса перед добавлением контроллера и пути действия. В своем вопросе я упростил свой сценарий до:
$("#test2").html("<a href='/controller/action/'>link 2</a>");
На самом деле это было больше похоже на:
$("#test2").html("<a href='" + GetBaseUrl() + "controller/action/'>link 2</a>");
function GetBaseUrl() {
return "//" + window.location.host + "/";
}
Оказывается, эта маленькая функция была виновником. Я до сих пор не понимаю, почему это вызвало проблему (и я не гуру JavaScript, так что, вероятно, есть лучший способ сделать это), но это определенно была проблема.
Для всех, у кого есть эта проблема, если скрипт находится на странице или в представлении, используйте:
$("#test2").html("<a href='@Url.Action("action", "controller")'>link 2</a>");
Если вы пытаетесь сделать это из связанного скрипта, используйте относительный путь , который будет зависеть от того, где ваш сайт. js живет, но в моем случае:
$("#test2").html("<a href='../../controller/action/'>link 2</a>");
Спасибо.