Вставленный Javascript не отображается при вызове из события updatepanel - PullRequest
0 голосов
/ 30 марта 2012

Любые подсказки, почему событие нажатия кнопки не вставляет скрипт успешно?

Вот действительно простой код.

C #:

public partial class _Default : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e){
        ClientScript.RegisterStartupScript(Page.GetType(), "scriptalert", "<script type=\"text/javascript\">alert('testLOAD');</script>;", false);
        btnAdd.Click += new EventHandler(btnAdd_Clicked);
}

protected void btnAdd_Clicked(Object sender,System.EventArgs e){
    ClientScript.RegisterStartupScript(Page.GetType(), "scriptfunc", "<script type=\"text/javascript\">func();</script>;", false);
}

}

HTML:

<asp:Content ID="HeaderContent" runat="server" ContentPlaceHolderID="HeadContent">
<script type="text/javascript">
alert("testSCRIPT");

function func() {
    alert("testFUNC");
}
</script>
</asp:Content>
<asp:Content ID="BodyContent" runat="server" ContentPlaceHolderID="MainContent">
    <asp:ScriptManager ID="ToolkitScriptManager1" runat="server" />
    <div id="View" style="height: 50%; width:20%; ">
        blahblahblah
    </div>
    <div id="Addd" style="height: 50%; width:100%;">
        <asp:UpdatePanel ID="UpdateAdd" runat="server">
            <ContentTemplate>
                <asp:Button ID="btnAdd" runat="server" Text="Add" />
            </ContentTemplate>
        </asp:UpdatePanel>
    </div>
</asp:Content>

При загрузке страницы я получаю два оповещения, а именно «testLOAD» и «testSCRIPT», но когда я нажимаю кнопку, ничего не происходит (должно быть третье оповещение) ... Проверено в отладчике, событие вызывается и запускается, но когда я просматриваю исходный код страницы, ничего не было вставлено.

У меня есть подозрение, что проблема может быть в другом месте, так как скопируйте это в новыйстраница без главной страницы (т.е. без ASP: теги содержимого) работает.У меня не было проблем с другими вставками скриптов, так почему же эта?

Ответы [ 3 ]

1 голос
/ 30 марта 2012

Проблема возникает из-за наличия кнопки внутри панели обновления. Чтобы преодолеть эту проблему, я думаю, что вы можете использовать ScriptManager вместо метода ClientScript.RegisterStartupScript. Что-то вроде следующего должно сделать это;

ToolkitScriptManager1.RegisterStartupScript(this, typeof(Page), UniqueID, "<script type=\"text/javascript\">func();</script>;", true);

вместо

ClientScript.RegisterStartupScript(Page.GetType(), "scriptfunc", "<script type=\"text/javascript\">func();</script>;", false);
0 голосов
/ 02 апреля 2012

Я нашел, что было не так ^. ^

Внутри скрипта, который я вставлял, была случайная точка с запятой, что привело к его разрыву: /

ClientScript.RegisterStartupScript(Page.GetType(), "scriptfunc", "<script type=\"text/javascript\">func();</script>;", false);

Такая глупая ошибка вызвала такое большое разочарование ... извините, ребята!

0 голосов
/ 30 марта 2012

Вы должны попробовать что-то вроде этого

string script = "alert ('что-то');";

this.ClientScript.registerclientscriptblock (this.GetType (), "scriptfunc", script, true);

или поместите свою функцию в событие page_load и вызовите функцию в свойстве Button.OnClientClick.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...