我正在使用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>
为了保留表单字段,我需要做什么?
答案 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();