Sto impostando il valore di una casella di testo tramite javascript lato client. Quando aggiorno la pagina il valore è perso.Casella di testo ASP.NET che perde valore dopo il postback quando il valore viene modificato lato client tramite javascript
La casella di testo non è disabilitata o impostata in sola lettura.
Ho letto suggerimenti per mettere il valore in un campo nascosto, preferirei non farlo. Sembra un hack.
La casella di testo è in un controllo utente come tale:
<div id="Row" class="RaidRow" runat="server">
<asp:Button ID="RaidRowButton" runat="server" CssClass="RaidRowButton" OnClick="RaidRowButton_Click" />
<asp:TextBox ID="CharacterNameTextBox" runat="server" CssClass="RaidRowControl SlotTextBox" MaxLength="12" />
<asp:Label ID="ClassNameLabel" runat="server" CssClass="RaidRowControl ClassLabel" />
</div>
Questo controllo è sulla pagina aspx.
Quando l'utente fa doppio clic nella casella di testo, preme Invio mentre la casella di testo è attivo, o cambia il testo, il seguente JavaScript funzione viene chiamata:
function VerifyCharacter(slotNumber, event)
{
var enterWasPressed = false;
if (event && event.which == 13)
{
enterWasPressed = true;
}
else if (window.event && window.event.keyCode == 13)
{
enterWasPressed = true;
}
if (event == null || enterWasPressed)
{
var realmName = 'Lightninghoof';
var characterNameTextBox = GetCharacterNameTextBox(slotNumber);
characterNameTextBox.style.color = '#CCCCCC';
var classLabel = GetClassNameLabel(slotNumber);
classLabel.style.color = '#CCCCCC';
classLabel.innerHTML = 'Unknown';
WoW_Stats.CharacterInformation.GetCharacterInformation(realmName, characterNameTextBox.value, slotNumber, GetCharacterInformation_Success, GetCharacterInformation_Failed);
}
}
volta che la chiamata web-service è completa, il seguente funzione javascript si chiama:
function GetCharacterInformation_Success(characterInformationResult)
{
var characterInfo = Sys.Serialization.JavaScriptSerializer.deserialize(characterInformationResult, true);
var classLabel = GetClassNameLabel(characterInfo.SlotNumber);
classLabel.style.color = characterInfo.ClassColor;
classLabel.innerHTML = characterInfo.ClassName;
var characterNameTextBox = GetCharacterNameTextBox(characterInfo.SlotNumber);
characterNameTextBox.style.color = characterInfo.ClassColor;
}
l'unico problema è che quando mi aggiorna la pagina, il testo nel CharacterNameTextBox e ClassNameLabel, cui sono stati posizionati sul lato client tramite javascript, si perdono.
Come posso essere sicuro che i controlli mantengano il loro valore tra i postback?
è un o ? Hai attributo runat = "server"? –