AJAX и выполнение на стороне сервера с C # ASP.NET - PullRequest
0 голосов
/ 05 января 2010

В моем предыдущем опыте веб-разработки я использовал настройки LAMP. Я пытаюсь освоить способ Microsoft при разработке проекта с использованием следующих инструментов:

  • ASP.NET 3.5
  • C #
  • MS Visual Studio 2008

Вот мой вопрос: как я могу узнать, когда код выполняется на сервере, а не как код javascript?

Я добавил функциональность AJAX в мой файл aspx, используя учебники, которые я нашел в Интернете. У меня есть что-то вроде:

ASP:

<asp:ScriptManager />
<asp:UpdatePanel>
    <ContentTemplate>
        <input id="inputItem" type="text" runat="server" />
        <asp:Button id="submitButton" runat="server"
                    OnClick="submitButton_clicked"/>
    </ContentTemplate>
</asp:UpdatePanel>

C #:

protected void submitButton_clicked (object sender, EventArgs e)
{
    // Do dynamic stuff on page.
}

Мне удалось успешно обновить элементы на странице, не требуя обновления. Насколько я понимаю, функция C # submitButton_clicked () автоматически преобразуется в javascript в Visual Studio при создании веб-приложения (а также любых вызываемых им функций).

Мне нужно иметь возможность отправлять предоставленные пользователем данные в этой форме на сервер, чтобы я мог добавить их в базу данных. Чего я не понимаю, так это как различать код, который автоматически преобразуется в JavaScript, и код, который не является таковым. Я хочу иметь возможность вызывать функции из submitButton_clicked (), которые используют LINQ для выполнения операций с базой данных, и этот код выполняется на стороне сервера.

Я пытался найти некоторые онлайн-уроки, которые объясняли бы это различие, но до сих пор не повезло. Любая помощь приветствуется.

Ответы [ 3 ]

3 голосов
/ 05 января 2010

Ваш код в функции submitButton_clicked не преобразуется в javascript, он выполняется на стороне сервера. Использование UpdatePanel позволяет вашей странице обновлять содержимое UpdatePanel через вызовы javascript (AJAX) к серверу, так что пользователь не испытывает полной перезагрузки страницы. Серверный код все еще работает.

Вы должны вставить некоторые точки останова в ваш код (Page_Load, ваш submitButton_clicked, другие места) и посмотреть, что произойдет, когда обновится UpdatePanel. Страница пройдет весь свой жизненный цикл на стороне сервера, и новое состояние будет передано через AJAX элементам управления в UpdatePanel.

1 голос
/ 05 января 2010

Если вы работаете в среде LAMP, вы можете чувствовать себя более комфортно с ASP.NET MVC. Это не требует от вас понимания шаблона WebForm и может дать вам ощущение комфорта, будучи разработчиком PHP.

Посмотри и посмотри, как тебе это нравится. Худшее, что может случиться, это то, что тебе это не нравится.

0 голосов
/ 05 января 2010

Здесь нужно кое-что понять.

кнопка отправки поведения.
<asp:Button ID="btn1" runat="server" OnClick="btn1_click" Text="btn" UseSubmitBehavior="false"/>

По умолчанию для UseSubmitBehavior установлено значение true.

  1. OnClick="btn1_click" - это событие, которое запускается, когда на стороне сервера, независимо от того, установлено ли для UseSubmitBehavior значение true / false

  2. когда поведение отправки ложно, добавлен метод javascript для нажатия кнопки, asp.net onclick="javascript:__doPostBack('btn1','')"

  3. если вы хотите добавить свои собственные функции javascript в код, который вы можете использовать, btn1.Attributes.Add('onclick','yourJS') или, если вы используете aspx / ascx, вы можете использовать onClientClick

<asp:Button ID="btn1" runat="server" OnClick="btn1_click" Text="btn" OnClientClick="yourJS"/>

Надеюсь, это поможет

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