Переопределить HTML-страницу ASP Master Page на одной странице содержимого? - PullRequest
2 голосов
/ 19 мая 2010

Я использую главные страницы ASP и хотел бы добавить обработчик события onkeypress к <body> на главной странице, но только для одной страницы.

Как мне это сделать?

Ответы [ 2 ]

1 голос
/ 19 мая 2010

Можно также сделать со скриптом в содержимом этой страницы ... Я буду использовать jQuery для упрощения идеи

<asp:Content ID="BodyContent" runat="server" ContentPlaceHolderID="MainContent">
<script type="text/javascript">
    $(function () {
        $(document.body).keypress(function(){});
    });
</script>

</asp:Content>
1 голос
/ 19 мая 2010

Я бы добавил публичное свойство в MasterPage, что-то вроде BodyOnKeyPress. Затем установите атрибут OnKeyPress тега body в событии PreRender MasterPage. Клиентские страницы просто должны установить это свойство до того, как сработает событие PreRender Мастера.

Это воздушный код, поскольку у меня нет проекта для тестирования. Но должно быть что-то вроде этого:

Разметка MasterPage:

<%-- Mark the body tag with runat="server", and give it an ID to reference in code. --%>
<body id="mainBody" runat="server">
    ...
</body>

MasterPage CodeBehind:

protected void Page_PreRender(...) {
    mainBody.Attributes["onkeypress"] = this.BodyOnKeyPress;
}

public string BodyOnKeyPress {
    get {
        return ViewState["BodyOnKeyPress"];
    }
    set {
        ViewState["BodyOnKeyPress"] = value;
    }
}
...