Это очень интересное требование.
Обычно мы добавляем скрипт на страницу, используя:
RegisterClientScriptBlock("myScript", MY_SCRIPT_CODE);
И позволяем Asp. Net указывать, куда поместить it.
И обычно мы не пытаемся поместить скрипт для присоединения к слушателю события "после закрывающего тега </body>
", чтобы убедиться, что он выполняется после загрузки страницы, но делаем :( используя jquery, просто в качестве примера)
$(document).ready(function() {
$("#rq1").on('click', function() { $("#myBtn").trigger('click'); });
}
Но хорошо, думая, что у вас есть это заданное c назначение (например, рендеринг точного вывода HTML как есть из более раннего проекта), Вот хак BAD BAD BAD, который должен сделать свое дело.
значимый класс Control
(от которого расширяются все веб-элементы управления) дает нам возможность полностью переопределить рендеринг элемента управления, назначив функцию делегата используя SetRenderMethodDelegate()
.
То, что мы делаем, мы сначала устанавливаем для theBody
(наше фактическое тело) для вызова нашего метода делегата,
И когда мы на самом деле вызываем, мы взломать Control и стереть его и сделать <body>
как вы sual, а затем визуализируем наш скрипт.
Вот реализация:
Сначала укажите ваш <body>
и id и установите runat = "Server" для доступа к нему из кода:
ASPX:
<body runat="server" id="theBody">
Затем реализуйте это в своем коде:
ASPX.CS:
private void RenderMyScript(HtmlTextWriter output, Control container)
{
object controlRareFields = typeof(Control)
.GetProperty("RareFieldsEnsured", BindingFlags.NonPublic | BindingFlags.Instance)
.GetValue(theBody, null);
controlRareFields.GetType().GetField("RenderMethod").SetValue(controlRareFields, null);
theBody.RenderControl(output);
output.Write(MY_SCRIPT_CODE);
}
И, наконец, переопределите OnPreRenderComplete и установите наш делегат:
protected override void OnPreRenderComplete(EventArgs e)
{
base.OnPreRenderComplete(e);
theBody.SetRenderMethodDelegate(RenderMyScript);
}
И это все.
Вот последние несколько строк, которые выводит моя страница:
<!-- End Browser Link -->
</body>
<script>
document.getElementById('rq1').addEventListener('click', function () {;
document.getElementById('myBtn').click();
});
</script>
</body>
</html>
Удачи.