简而言之,如果不先刷新页面以考虑您注入的 javascript 代码,您就无法从代码隐藏中触发 javascript。
基本上,使用RegisterStartupScript,你告诉asp 在页面加载时注入一些javascript。但如果您需要动态调用 javascript 函数或变量,这将无济于事。
您可以从我的示例中获得什么:我有一个 div 覆盖了 ASP 控件,我希望从中运行 javascript 和代码隐藏。div 的 onClick 方法和日历的 OnSelectionChanged 事件都以这种方式触发。
在这个例子中,我使用了一个 ASP 日历控件,并且我通过 javascript 和代码隐藏来控制它:
前端代码:
<div onclick="showHideModal();">
<asp:Calendar
OnSelectionChanged="DatepickerDateChange" ID="DatepickerCalendar" runat="server"
BorderWidth="1px" DayNameFormat="Shortest" Font-Names="Verdana"
Font-Size="8pt" ShowGridLines="true" BackColor="#B8C9E1" BorderColor="#003E51" Width="100%">
<OtherMonthDayStyle ForeColor="#6C5D34"> </OtherMonthDayStyle>
<DayHeaderStyle ForeColor="black" BackColor="#D19000"> </DayHeaderStyle>
<TitleStyle BackColor="#B8C9E1" ForeColor="Black"> </TitleStyle>
<DayStyle BackColor="White"> </DayStyle>
<SelectedDayStyle BackColor="#003E51" Font-Bold="True"> </SelectedDayStyle>
</asp:Calendar>
</div>
代码隐藏:
protected void DatepickerDateChange(object sender, EventArgs e)
{
if (toFromPicked.Value == "MainContent_fromDate")
{
fromDate.Text = DatepickerCalendar.SelectedDate.ToShortDateString();
}
else
{
toDate.Text = DatepickerCalendar.SelectedDate.ToShortDateString();
}
}