Вы говорите, что данные поступают непосредственно из источника данных; Можно ли разместить слой абстракции перед ним? Весьма распространено создавать представление для того, что вы отображаете, и чтобы представление связывалось с данными. Наиболее распространенной реализацией этой идеи является Model View View-Model (MVVM). Прочитайте об этом онлайн.
Возможно, у вас есть свойство «DisplayText», которое связано с текстовым полем, и это просто «получатель», который оборачивает основной текст. Он может обнаружить, если текст уже обернут, а если нет, обернуть его.
Например.
public class TestView {
private Test datasource;
public TestView(Test source)
{
this.datasource = source;
}
public string DisplayText {
get {
if (datasource.Text.Contains("<bold>")==false) {
return "<bold>" + datasource.Text + "</bold>";
}
return datasource.Text;
}
}
}
Затем, привязка к представлению, а не непосредственно к объекту.
Вы устанавливаете свойство окна onbeforeunload
на функцию.
В этом сообщении есть хороший пример того, как это сделать.
Или другой пример:
<script language="JavaScript">
var needToConfirm = true;
window.onbeforeunload = confirmExit;
function confirmExit()
{
if (needToConfirm)
//return message to display in dialog box;
}
</script>
...
<input type="Submit" value="Save" onclick="needToConfirm = false;" />
] А установить needToConfirm
для вашей формы вы можете:
$(document).ready(function() {
$(':input', document.myForm).bind("change", function() { needToConfirm = true; }); // Prevent accidental navigation away
});
Пользовательский интерфейс JQuery может быть вам полезен - см. по этой ссылке . Он показывает несколько различных типов диалогов - думаю, вам нужен «Модальное подтверждение». Однако имейте в виду, что библиотека пользовательского интерфейса JQuery довольно объемна, поэтому, возможно, вам будет лучше поискать более индивидуальный вариант (некоторые из них возникли при поиске JQuery Confirm Modal). Я не могу поручиться за качество этих решений, поскольку никогда не пробовал их.