KyLim0211 Ответов: 1

C# fail get user input.


мой aspx
<tr>
            <td>input</td>
            <td>
                <input type="text" runat="server" id="input" name="input" value="" style="width: 250px" />
            </td>
            <td>
                <asp:Button ID="Button1"  style="text-align: right;" align="right"  runat="server" Text="Submit" BorderStyle="Solid" OnClick="btnSubmit_Click" />
           </td>
</tr>


мой с#
protected string r_input = string.Empty;

загрузка моей страницы
protected void Page_Load(object sender, EventArgs e)
  {
     if (Request.Params["input"] != null) r_input = Request.Params["input"];
  }

моя кнопка "Отправить"
protected void btnSubmit_Click(object sender, EventArgs e)
{
    string connectionStringDB = "server=PC00093-LimKY-;database=master;uid=sa;password=abc135;";
    using (SqlConnection connection = new SqlConnection(connectionStringDB))
    {
        SqlCommand cmd = new SqlCommand("INSERT INTO countrydetail (ID,Name) VALUES (@id,@Name)");
        cmd.CommandType = CommandType.Text;
        cmd.Connection = connection;
        cmd.Parameters.AddWithValue("@ID", 1);
        cmd.Parameters.AddWithValue("@Name", r_input);
        connection.Open();
        cmd.ExecuteNonQuery();
    }


После того, как я ввожу что-то в текстовое поле, я нажимаю кнопку Отправить.Я проверяю свою БД,только ID успешно вставляется в базу данных,столбец Name пуст

Что я уже пробовал:

я пробовал много раз, но все равно не могу работать...нужна помощь.

1 Ответов

Рейтинг:
0

an0ther1

Это было бы потому, что ваша защищенная строка r_input не установлена.
Первое, что вам нужно понять, это жизненный цикл страницы-см.: MSDN - ASP.Net обзор жизненного цикла Страницы[^]

Используйте свой отладчик и поставьте точку останова в событии btnSubmit_Click.
Проверьте, что такое значение r_input (пустая строка), а затем посмотрите на значение вашего ввода, несколько путано названное "input" - оно будет иметь любое значение, введенное пользователем.

с уважением


KyLim0211

да, я отладил его, значение пустое, почему?

что случилось?
если (запрос.Params ["input"] != null) r_input = запрос.Параметры["вход"];

an0ther1

Потому Что Просьба.Params не предназначен для получения значения поля ввода.
Во-первых, измените имя (идентификатор) на что-то, что имеет смысл, например: txtUserName вместо "input"
Затем запустите страницу и поместите точку останова в обработчик событий btnSubmitClick.
Как только точка останова будет достигнута, перейдите к немедленному окну в вашем отладчике & type ? txtUserName.Текст
Именно так вы должны получать значение вашего текстового поля не через запрос.Параметры.
Вы действительно найдете эту просьбу.Params ("input") имеет значение null, поскольку фактическое имя ключа определяется на основе идентификатора клиента, а не идентификатора сервера. Вы можете найти идентификатор клиентской стороны, но загружаете страницу в браузер и выбираете источник просмотра.
Это можно увидеть, выполнив следующие действия;
В поле Page_Load введите следующее;
Система.Коллекции.Специализированные.Namevaluecollection, который кол = запрос.Параметры;
Создайте точку останова на этой линии.
Когда строка будет нажата, нажмите клавишу F11, чтобы перейти к следующей строке кода
Если вы используете окно локального отладчика, то увидите идентификатор текстового поля на стороне клиента, а не на стороне сервера.
Если бы вы ввели имя клиентской стороны, вы бы получили значение текстового поля, но вам это не нужно, вы создали ввод и поэтому можете получить доступ к нему в своем коде, просто используя txtUserName.Текст

с уважением