【发布时间】:2020-01-14 22:01:08
【问题描述】:
我的页面中包含一个脚本:
<script runat="server" language="VB" src="../AdditionalField/AdditionalFieldSave.aspx"></script>
编辑:错误的脚本,我的意思是这个:
<!-- #include file="../AdditionalField/AdditionalFieldDisplayHTML.aspx" -->
是的,您显然可以在 WebForms 中#include!
在这个脚本中,我将一些值添加到列表中:
If myAdditionalFieldTempReader("Mandatory") Then
MandatoryAdditionalFields.Add("Notes" & additionalFieldFoundCount)
End If
然后回到页面,我从列表中检索值:
jQuery("#YouthEdit").validate({
rules: {
BirthDate: {
required: true,
date: true
},
FirstName: {
required: true,
},
LastName: {
required: true,
}
<%
For Each mf As String In MandatoryAdditionalFields
Response.Write("," & mf & ": {required: true}")
Next
%>
},
messages: {
BirthDate: "Enter a birth date",
FirstName: "Enter a First Name",
LastName: "Enter a Last Name"
},
submitHandler: function(form) {
//form.submit();
document.YouthEdit.submit();
}
});
我的问题是当我从列表中检索值时,列表仍然是空的;它还没有被填充。如何强制脚本在页面本身之前运行,以便在需要时显示这些值?
编辑:好的,我试过了:
<input id="mandatoryAdditionalFieldsHidden" type="hidden" value="" runat="server" />
在包含页面和这个:
mandatoryAdditionalFieldsHidden.Value = String.Join(",", MandatoryAdditionalFields)
在从主页上的Page_Init调用的函数中和
var mandatoryAdditionalFields = jQuery("#mandatoryAdditionalFieldsHidden").val().split(',');
for (field in mandatoryAdditionalFields)
rules.push([field, 'required: true']);
在主页面JavaScript。现在我收到一条错误消息,说我无法在 undefined 上调用 split...为什么当我在 Page_Init 中设置隐藏字段时它会有一个未定义的值?
【问题讨论】:
-
我建议您将信息放在
<input ID="somethingSensible" type="hidden" value="your data">元素中。在 Page_Load 处理程序中执行此操作。使用更多 jQuery 提取该数据。在 Web 表单中使用Response.Write通常表明您正在做一些违背其本意的事情。 -
试过了,好像不行。用我使用的代码更新了我的帖子。
-
如果你在浏览器中查看页面的来源,隐藏的输入是否得到正确的值?
-
不,它没有。如果我设置了一些断点,我可以看到 Page_Init 在脚本设置必填字段列表之前正在运行。让我按照您最初的建议尝试 Page_Load...
-
不,Page_Load 不起作用,Page_PreRender 也不起作用。无论我处理什么事件,代码都会在包含的脚本设置必填字段列表之前运行...