Чтобы строка не была строковым литералом Javascript, вы заменяете обратную косую черту двойной обратной косой чертой, а разделитель строк - обратной косой чертой и разделителем:
<a onclick="AddressHandler.ProcessAddress('<%= homeAddress.Replace(@"\", @"\\").Replace("'", @"\'") %>');" class="button-link">change</a>
Примечание: протокол javascript:
используется, когда вы помещаете скрипт в URL, а не как обработчик событий.
Edit:
Если сценарий также содержит символы, для которых требуется кодировка HTML, это следует сделать после экранирования строки Javascript:
<a onclick="<%= Html.Encode("AddressHandler.ProcessAddress('" + homeAddress.Replace(@"\", @"\\").Replace("'", @"\'") +"');") %>" class="button-link">change</a>
Итак, если вы не знаете, что содержит строка, для безопасности вам необходимо сначала экранировать строковый литерал, а затем кодировать код HTML, чтобы его можно было вставить в атрибут тега HTML.