Модал не работает на моем веб-сервере, но работает на localhost. Это почему? - PullRequest
0 голосов
/ 22 января 2019

Я использую веб-формы asp.net. У меня есть кнопка в верхней части страницы, и когда пользователь нажимает кнопку, я хочу всплывающее модальное окно. Это код, который я использовал для его реализации. Код отлично работает на моем локальном хосте. Но на рабочем сервере ничего не происходит.

<!-- Bootstrap -->
<link href="/Content/bootstrap.min.css" rel="stylesheet">
<script src="/Scripts/jquery-2.1.1.min.js"></script>
<script src="/Scripts/bootstrap.min.js"></script>

выше ссылки были размещены на главной странице.

Ниже код размещен на странице aspx

 <asp:UpdatePanel runat="server" UpdateMode="Conditional" ID="uppnlModalDistrict">
                            <ContentTemplate>
                                <asp:Button runat="server" ID="btnModalOpen" Width="100%" CssClass="btn btn-primary" Text="Select Location" OnClick="btnModalOpen_Click" />

                                <!-- Modal -->
                                <section>
                                    <div id="myModal" class="modal fade" role="dialog">
                                        <div class="modal-dialog">

    <div class="modal-content">

     </div>
               </div>
                                    </div>

                                </section>
                            </ContentTemplate>
                        </asp:UpdatePanel>

В коде позади, когда я нажимаю кнопку btnModalOpen.

    protected void btnModalOpen_Click(object sender, EventArgs e)
    {
        GetModalDistricts(); //Function that populate data in Modal
        uppnlModalDistrict.Update();
        ScriptManager.RegisterStartupScript(this, this.GetType(), "Pop", "openModal()", false);
    }

В aspx

    function openModal() {
        $('#myModal').modal('show');
    }

Так что же не так с этим кодом?

Это ошибка консоли

Error: Sys.WebForms.PageRequestManagerParserErrorException: The
message received from the server could not be parsed. Common causes
for this error are when the response is modified by calls to
Response.Write(), response filters, HttpModules, or server trace is
enabled.

Details: Error parsing near

1 Ответ

0 голосов
/ 23 января 2019

Причиной этой ошибки является то, что вы не выдавали открывающий и закрывающий теги сценария для JavaScript, который вы зарегистрировали при запуске, поскольку последний параметр метода ScriptManager.RegisterStartupScript имеет значение false в обработчике события нажатия кнопки, когда на самом деле это должно быть правдой.

Поэтому просто используйте строку ниже, чтобы заменить исходную строку, и проблема будет решена.

ScriptManager.RegisterStartupScript(this, this.GetType(), "Pop", "openModal()", true);

Единственный раз, когда вы должны передать false как последний параметр в ScriptManager.RegisterStartupScript, это когда регистрируемый скрипт уже содержит открывающие и закрывающие теги скрипта, как показано в строке ниже.

ScriptManager.RegisterStartupScript(this, this.GetType(), "Pop",
                         "<script type='text/javascript'>openModal()</script>", false);
...