значения элементов не меняются - PullRequest
0 голосов
/ 17 апреля 2019

У меня есть следующий код:

asp.net-код

..
<input type="text" class="form-control" placeholder="some text" aria-label="note" id="note" aria-describedby="basic-addon3" runat="server">
..

c # -Code

protected void Page_Load(object sender, EventArgs e)
{
    note.Value = "some other text";
}

private void ButtonSave_Click(object sender, EventArgs e)
{
    SaveValue(note.Value);
}

Если я нажму кнопку, которая вызывает SaveValue-Функция всегда сохраняет значение, которое я установил ранее для Page_Load, а не значение, которое я ввел на самой странице.

Что мне нужно сделать, чтобы получить фактическое значение, которое установленов поле ввода?

1 Ответ

3 голосов
/ 17 апреля 2019

Просто немного измени свой код

protected void Page_Load(object sender, EventArgs e)
{
    if(!IsPostBack)
    {
        note.Value = "some other text";
    }
}

В ASP.NET есть нечто, называемое жизненным циклом страницы. Когда вы делаете на странице что-то, что вызывает обратную передачу (например, нажатие элемента управления Button), страница отправляет HTTP-запрос POST на тот же URL-адрес. Когда это происходит, для свойства IsPostBack страницы устанавливается значение true. Каждый раз, когда страница загружается, будь то с помощью первого запроса или последующей обратной передачи, событие Page_Load сработает, прежде чем будут вызваны какие-либо обработчики событий нажатия кнопки.

Это означает, что вы сбрасывали значение note до того, как был достигнут обработчик нажатия кнопки. Чтобы предотвратить это, ваше событие Page_Load должно проверить свойство IsPostBack, чтобы убедиться, что оно не перезаписывает значение, поступающее от пользователя.

Подробнее см. В этом учебнике .

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