Как мне получить RadTextBox TextMode=Password, чтобы принять значение Auto Filled в коде позади?
Браузеры Google Chrome и FireFox имеют функцию, которая позволяет пользователям сохранять имена пользователей и пароли на своем локальном компьютере. Это позволяет им войти в следующий раз без особых усилий или запоминания, что это за информация. Информация в основном заполняется автоматически. Когда те браузеры делают это, он показывает * в текстовом поле. Показывает, что браузер успешно поместил значение в RadTextBox. Тем не менее, когда код C# позади получает значение в виде пустой строки.
Мой код выглядит следующим образом
<telerik:RadTextBox ID="txtPassword" runat="server" ToolTip="Enter password"
Text="" MaxLength="40" EnableSingleInputRendering="False"
Wrap="False" TextMode="Password" CausesValidation="false" Skin="WebBlue">
</telerik:RadTextBox>
Код позади:
objLogin.Password = txtPassword.Text;
Даже более странным является тот факт, что если вы нажмете кнопку более одного раза, то код будет видеть реальное значение и перейдет к вашему входу. Похоже, что элемент управления RadTextBox необходимо отрендерить, или требуется повторная запись для контроля, чтобы работать должным образом.
Что мне нужно сделать, чтобы элемент управления RadTextBox сначала распознал введенное значение из браузера, не щелкая несколько раз для кода, чтобы увидеть значение?
Спасибо за вашу помощь.
1 ответ
Это потому, что ваши текстовые поля получают значение только на стороне клиента, а базовые значения RadTextBoxes - нет.
Ранее я сталкивался с этой проблемой, когда значения, заданные для RadTextBox с помощью jQuery xxx.val('...'), не передаются на стороне сервера при обратной передаче.
Единственный способ получить значение, "назначенное" для свойства Text элемента управления RadTextBox со стороны клиента, - это использовать:
$find('<%= txtUsername.ClientID%>').set_value('newvalue');
В вашем случае, скорее всего, браузеры устанавливают (автозаполнение) значения и доступны только на стороне клиента. Поэтому, что вы можете сделать, чтобы на самом деле присвоить эти значения, это перехватить перед обратной передачей кнопки входа в систему, например так:
var un = $('#<%= txtUsername.ClientID%>').val();
var pw = $('#<%= txtPassword.ClientID%>').val();
$find('<%= txtUsername.ClientID%>').set_value(un);
$find('<%= txtPassword.ClientID%>').set_value(pw);
Если вы используете RadButton в качестве кнопки входа в систему, это можно сделать для события OnClientClicking/OnClientClicked кнопки следующим образом:
<telerik:RadButton ID="cmdSignin" runat="server" Text="Sign In"
SingleClick="true" SingleClickText="Signing In..."
OnClientClicking="OnClientClicking"></telerik:RadButton>
Надеюсь, это поможет.