Domanda

Suppongo che questo non sia un grosso problema, dal momento che ci sono altro modo attorno a questo problema, ma sono davvero curioso della risposta, dal momento che pensavo che fosse possibile farlo.

Ho una proprietà pubblica che restituisce un booleano nel mio codice dietro. Mi piacerebbe accedere a questa variabile del server nella mia funzione di convalida JavaScript, ma finora, non averlo completamente.

Public Property editMode() As Boolean
    Get
        If Cache("editMode") IsNot Nothing Then
            Return (DirectCast(Cache("editMode"), Boolean))
        Else
            Return False
        End If
    End Get
    Set(ByVal value As Boolean)
        Cache("editMode") = value
    End Set
End Property

function validateEdit()
{
    alert("editMode value is " + '<%#editMode()%>');
    if ('<%#editMode()%>'.toString() == "True")
    {
        alert("You are currently in edit mode. Please save or cancel changes.");
        return false;
    }
    return true;
}
.

Ho provato un gruppo di varianti su questo, ma è sempre falso. Nel codice corrente i rendimenti Alert "EDITMode Value è falso"

Quando uso:

if ('<%#editMode()%>') ...
.

Allora è sempre falso, ma entra nella condizione IF, quindi il comportamento è come se fosse sempre vero.

Un'altra cosa da ricordare è che la maggior parte dei tag javascript / server tag trovo che ritrovo ad usare <%= editmode%> , ma non posso farlo perché ogni volta che uso= invece del # ottengo un'eccezione:

.

"La raccolta dei controlli non può essere modificato perché il controllo contiene Blocchi di codice (I.e. <% ...%>). "

Quindi ho risolto questo usando # e dicendo

    Page.Header.DataBind()
    Page.Form.DataBind()
.

Nella pagina Carica il gestore di eventi.

Qualche idea? Grazie in anticipo. :)

(anche, di solito uso c #, quindi avrei potuto fare inconsapevolmente qualcosa di spigolo nella parte vb, quindi sentiti libero di puntarlo anche questo)

È stato utile?

Soluzione 2

Questo mi ha aiutato a risolvere l'errore. "La raccolta dei controlli non può essere modificata perchéIl controllo contiene blocchi di codice "

Spostamento della funzione JavaScript fuori dalla testa e nel corpo risolve il problema.Sembra essere alcune cose che potrebbero causare questo problema, ma nel mio caso, il colpevole più probabile è l'AjaxToolkit.

Altri suggerimenti

In primo luogo, prova a passare a questo:

<%=editMode()%>
.

Non sono sicuro che sia così, ma non può ferire.Secondo, sei in modalità Modifica quando caricata prima la pagina?Questo codice esegue il lato server e restituire il risultato all'utente.

Nella pagina dell'utente, vedranno:

function validateEdit()
{
    alert("editMode value is " + 'False');
    if ('False'.toString() == "True")
    {
        alert("You are currently in edit mode. Please save or cancel changes.");
        return false;
    }
    return true;
}
.

Ancora una volta, non sono sicuro che sia, ma è importante capire che JavaScript non sta effettuando alcuna chiamata al server.

un'altra cosa.

si rende conto che stai convertendo una stringa in un'altra stringa con

'<%#editMode()%>'.toString() 
.

giusto?

Penso che quello che vuoi è questo

if ('<% =editMode.toString() %>'= 'True')...
.

o meglio ancora

if (<% =editMode.toString().ToLower() %>)...
.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top