Как заставить скрипт VB. NET запускаться перед самой страницей в ASP. NET WebForms? - PullRequest
0 голосов
/ 15 января 2020

У меня есть скрипт, который включен в мою страницу:

<script runat="server" language="VB" src="../AdditionalField/AdditionalFieldSave.aspx"></script>

edit: неправильный скрипт, я имел в виду этот:

<!-- #include file="../AdditionalField/AdditionalFieldDisplayHTML.aspx" -->

yes, вы можете #include in Веб-формы, по-видимому!

Внутри этого скрипта я добавляю некоторые значения в список:

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();
    }
    });

Моя проблема в том, что когда я получаю значения из списка, список все еще пуст; это еще не было заполнено. Как заставить скрипт запускаться перед самой страницей, чтобы значения присутствовали, когда они мне нужны?

edit: OK, я попробовал это:

<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. И теперь я получаю сообщение об ошибке, в котором говорится, что я не могу вызвать split для undefined ... почему скрытое поле будет иметь неопределенное значение, когда я задаю его в Page_Init?

1 Ответ

0 голосов
/ 15 января 2020

Вы должны написать свой код jquery таким образом, чтобы он выполнялся только после загрузки страницы:

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