A @ gunr2171 отмечает в комментариях, что единственный способ динамически обновить ссылку после ее отображения в браузере - это использовать некую форму сценариев на стороне клиента, обычно JavaScript. В вашем случае я бы рекомендовал сделать что-то вроде этого:
<span
class="close-modal"
data-href-template="@Url.Action("SaveNotes", "CallCenter", new {activityId = item.callIdKey, noteText="{note}"})"
>
×
</span>
Примечание: Как отмечает @HBlackorby в своем ответе, вы не должны использовать @Html.Action()
Вот; Я предполагаю, что вы имели в виду @Url.Action()
.
Таким образом, у вашего JavaScript есть шаблон (data-href-template
), с которым он может работать с четко определенным токеном ({note}
) для замены, вместо того, чтобы анализировать URL-адрес, чтобы определить, где находится ранее замененный текст. В противном случае вы потенциально попадете в сценарий, в котором вы наберете, например, CallCenter
в свой <textarea />
, и теперь это неоднозначная ссылка, которую вы не можете просто заменить вслепую. Или, что еще хуже, вы набираете «а», и это действительно неоднозначно.
Если вы уже используете jQuery на своем сайте, фактическая замена могла бы быть сделана, используя что-то вроде:
$(document).ready(function () {
$('span.close-modal').click(function() {
var noteInput = $('textarea[name="paragraph_text"]');
var encodedNote = encodeURI(noteInput.text());
var template = $(this).data("href-template");
var targetUrl = template.replace("{note}", encodedNote);
window.location.href = targetUrl;
});
});
Вы также можете сделать это без jQuery, очевидно - и должно, если вы уже не зависите от этого. Суть в том, чтобы проиллюстрировать, что это не обязательно должен быть «гигантский блок кода jQuery». На самом деле, это можно сделать всего за несколько строк - и, вероятно, так и должно быть. Я специально разбил его на несколько этапов и переменных для удобства чтения.