2010-07-29 28 views
0

Je développe un site Web en utilisant EPiServer. J'ai une forme qui se soumet à elle-même. Sur soumettre, je vérifie s'il manque des champs. Si oui, le message d'erreur est affiché.Champs de formulaire non conservés en postback

Le problème est que mes champs sont réinitialisés lors de la soumission.

Je pourrais vérifier cela en utilisant jQuery, mais je ne le suis pas. Je suis en train de dire ça du code derrière.

J'ai essayé de définir EnableViewState=true endroits sevceral, mais pas de chance.

est ici une partie de mon code:

<asp:Content ID="Content3" ContentPlaceHolderID="RightContentPlaceHolder" runat="server"> 
    <asp:Panel ID="panelComplaint" runat="server"> 
    <li> 
     <h3>Postnummer*</h3> 
     <input id="senderPostCode" name="postCode" type="text" size="20" enableviewstate="true" /> 
     <asp:Label runat="server" id="lblPostCode" CssClass="missingField" Text="Mangler tekst" Visible="false" /> 
    </li> 
    <li> 
     <h3>Post sted*</h3> 
     <input id="senderCity" name="city" type="text" size="100" /> 
     <asp:Label runat="server" id="lblCity" CssClass="missingField" Text="Mangler tekst" Visible="false" /> 
    </li> 
    <li> 
     <div class="spacer10px"></div> 
     <button type="submit" name="Send" >Send me</button> 
    </li> 
    </asp:Panel> 
</asp:Content> 

Que dois-je faire, afin de conserver les champs de formulaire?

Répondre

1

Avez-vous essayé d'ajouter runat="server" aux champs de saisie? Autant que je sache, cela est nécessaire pour s'assurer que les données d'asp.net circulent correctement. Je ne suis pas sûr s'il y a quelque chose de spécifique à EPiServer qui ferait que ce soit différent.

L'attribut enableviewstate, à moins qu'il ne soit spécifique à EPiServer, ne fera rien. Si vous avez un problème avec ASP.net, pensez à mettre à jour vers .NET 4.0, si vous le pouvez, car cela vous permet de contrôler la manière dont les ID sont modifiés. Sinon, vous pouvez essayer de placer une traduction amicale dans la page que vous pouvez accéder via JQuery, par exemple:

<script language="javascript" type="text/javascript"> 
    function getSenderPostCode() { return eval('<%=senderPostCode.ClientID%>'); } 

    var senderPostCodeField = JQuery('#getsenderPostCode'); 

    alert(senderPostCodeField.length()); 
</script> 

Cela dit, ayant « getSenderPostCode() » pour faire référence signifierait que vous pourriez probablement sauter la étape avec JQuery d'obtenir une référence à, donc ce qui suit fonctionnerait:

alert(getSenderPostCode().length(); 

en ajoutant runat="server" à vos commandes vous auriez alors pas besoin d'utiliser Request.Form["senderPostCode"].ToString() pour accéder au contenu de ce champ, vous pourriez accéder à la place directement:

var contentOfSenderPostCode = senderPostCode.Value.ToString(); 
+0

Si je fais cela, je ne suis pas en mesure de récupérer les valeurs de formulaire en utilisant 'Request.Form [" street "]. ToString()', car .Net change le nom de champ en 'ctl00 $ MainContentPlaceHolder $ RightContentPlaceHolder $ senderStreet '... – Steven

+0

Aussi, je ne suis pas capable d'utiliser' jQury ('# myID') '- encore une fois parce que .NET crée son propre ID. – Steven

+0

@Steven, j'ai ajouté une mise à jour concernant. NET ID mangling =) – Rob