Поля формы не сохраняются при обратной передаче

Я занимаюсь разработкой сайта с помощью EPiServer. У меня есть форма, которая подчиняется себе. При отправке я проверяю, отсутствуют ли какие-либо поля. Если да, то отображается сообщение об ошибке.

Проблема в том, что мои поля сбрасываются при отправке.

Я мог бы проверить это с помощью jQuery, но это не так. Я проверяю это из кода.

Я пытался установить EnableViewState=true несколько мест, но не повезло.

Вот часть моего кода:

<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>  

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

1 ответ

Решение

Вы пытались добавить runat="server" в поля ввода? Насколько я знаю, это необходимо для правильной проверки данных asp.net. Я не уверен, есть ли что-то конкретное для EPiServer, которое бы отличало это.

enableviewstate атрибут, если он не специфичен для EPiServer, на самом деле ничего не будет делать.

Если проблема заключается в том, что идентификатор, создаваемый ASP.net, является проблемой, рассмотрите возможность обновления до.NET 4.0, если это возможно, так как это предоставляет вам возможность контролировать изменение идентификаторов. Если нет, вы можете попробовать разместить дружественный перевод на странице, к которой вы затем можете получить доступ через JQuery, например:

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

  var senderPostCodeField = JQuery('#getsenderPostCode');

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

Тем не менее, наличие getSenderPostCode() для ссылки будет означать, что вы, вероятно, можете пропустить шаг с JQuery для получения ссылки на него, так что будет работать следующее:

alert(getSenderPostCode().length();

Добавляя runat="server" к вашему контролю вам тогда не нужно будет использовать Request.Form["senderPostCode"].ToString() чтобы получить доступ к содержимому этого поля, вы можете получить к нему прямой доступ:

var contentOfSenderPostCode = senderPostCode.Value.ToString();
Другие вопросы по тегам