表单字段未在回发中保留

时间:2010-07-29 08:05:25

标签: c# forms postback episerver

我正在使用EPiServer开发一个网站。我有一个提交给自己的表格。 提交时,我会检查是否有任何字段丢失。如果是,则显示错误消息。

问题是我的字段在提交时会重置。

我可以使用jQuery检查这个,但我不是。我正在从背后的代码中解决这个问题。

我已尝试设置EnableViewState=true sevceral地方,但没有运气。

这是我的代码的一部分:

<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 个答案:

答案 0 :(得分:1)

您是否尝试将runat="server"添加到输入字段?据我所知,这需要确保asp.net正确地往返数据。我不确定EPiServer是否有任何特定的东西可以使它们有所不同。

enableviewstate属性,除非它特定于EPiServer,否则实际上不会做任何事情。

如果由ASP.net混淆了ID是一个问题,请考虑升级到.NET 4.0,如果可以的话,因为这为您提供了控制ID修改方式的方法。如果没有,您可以尝试将友好的翻译放入页面,然后您可以通过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();