【问题标题】:How do I force a VB.NET script to run before the page itself in ASP.NET WebForms?如何强制 VB.NET 脚本在 ASP.NET WebForms 中的页面本身之前运行?
【发布时间】: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();
    }
    });

我的问题是当我从列表中检索值时,列表仍然是空的;它还没有被填充。如何强制脚本在页面本身之前运行,以便在需要时显示这些值?

编辑:好的,我试过了:

&lt;input id="mandatoryAdditionalFieldsHidden" type="hidden" value="" runat="server" /&gt;

在包含页面和这个:

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 中设置隐藏字段时它会有一个未定义的值?

【问题讨论】:

  • 我建议您将信息放在&lt;input ID="somethingSensible" type="hidden" value="your data"&gt; 元素中。在 Page_Load 处理程序中执行此操作。使用更多 jQuery 提取该数据。在 Web 表单中使用 Response.Write 通常表明您正在做一些违背其本意的事情。
  • 试过了,好像不行。用我使用的代码更新了我的帖子。
  • 如果你在浏览器中查看页面的来源,隐藏的输入是否得到正确的值?
  • 不,它没有。如果我设置了一些断点,我可以看到 Page_Init 在脚本设置必填字段列表之前正在运行。让我按照您最初的建议尝试 Page_Load...
  • 不,Page_Load 不起作用,Page_PreRender 也不起作用。无论我处理什么事件,代码都会在包含的脚本设置必填字段列表之前运行...

标签: asp.net vb.net webforms


【解决方案1】:

您应该以这种方式编写您的 jquery 代码,因此它只会在页面加载后执行:

$( document ).ready(function() {
  // Put your code here.
});

【讨论】:

  • 哦,它已经被 jQuery().ready(function() {} 包裹了,让我试试 jQuery(document).ready(function() {}... 不,这没有帮助!
猜你喜欢
  • 2011-03-23
  • 2012-10-24
  • 2017-01-13
  • 1970-01-01
  • 2021-05-26
  • 2018-08-16
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多