0

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

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

4

1 回答 1

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();
于 2010-07-29T08:08:13.993 回答