【问题标题】:Form fields not retained on postback回发时未保留表单字段
【发布时间】:2010-07-29 08:05:25
【问题描述】:

我正在使用 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>  

为了保留表单字段,我需要做什么?

【问题讨论】:

    标签: c# forms postback episerver


    【解决方案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();
    

    【讨论】:

    • 如果这样做,我将无法使用Request.Form["street"].ToString() 检索表单值,因为.Net 将字段名称更改为ctl00$MainContentPlaceHolder$RightContentPlaceHolder$senderStreet...
    • 另外,我无法使用 jQury('#myID') - 再次因为 .NET 创建了它自己的 ID。
    • 好的,谢谢。 (还有一些乱码,因为 cmets 必须是 15 个字符长......)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-02-27
    • 1970-01-01
    • 2012-02-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多