Domanda

Ho un controllo del pulsante moderno in stile Facebook il cui segno laterale del client è simile a

<button id="ctl00_uxBtn" value="ctl00$uxBtn" name="ctl00$uxBtn type="submit">
  <div style="background-image: url("Icons/page_edit.png"); background-position: left center; background-repeat: no-repeat; line-height: 16px; padding: 3px 0pt 3px 22px;">Save Draft</div>
</button>
.

Questo pulsante funziona bene con entrambi IE e FF utilizzando il server Web Visual Studio 2010, ma quando distributo l'applicazione sul server (Windows Server 2008 / IIS 7.0) ottengo "una richiesta potenzialmente pericolosa. Il valore delForm è stato rilevato"errore, ma solo con IE.Sembra che cioè stia passando il CTL00_UXBTN="<

È stato utile?

Soluzione 2

IE insiste sull'invio del contenuto tra e come il valore del pulsante, e non sembra che sia un modo per prevenirlo.Quindi, intercettiamo la richiesta sul lato client utilizzando un gestore di eventi OnSubmit come tale:

<form id="form1" runat="server" onsubmit="fixModernButton()">
.

La nostra funzione JavaScript quindi controlla se il browser è IE e se la proprietà INNERHTML del pulsante inizia con "<".In tal caso, è markup e causerà ASP.NET di aumentare l'errore "Valore potenzialmente pericoloso della richiesta", quindi impostiamo il valore della proprietà InnerHTML sul valore della proprietà Inner Sext, quindi inviare il modulo.La fonte per la funzione JavaScript è:

function fixModernButton() {
    if (navigator.appName === 'Microsoft Internet Explorer') {
        if (document.activeElement.innerHTML && document.activeElement.innerHTML.charAt(0) === '<') {
            document.activeElement.innerHTML = document.activeElement.innerText;
        }
    }
    document.forms['form1'].submit();
}
.

Altri suggerimenti

È necessario utilizzare le citazioni corrette:

<button id="ctl00_uxBtn" value="ctl00$uxBtn" name="ctl00$uxBtn" type="submit">
  <div style="background-image: url('Icons/page_edit.png'); background-position: left center; background-repeat: no-repeat; line-height: 16px; padding: 3px 0pt 3px 22px;">Save Draft</div>
</button>
.

Ti consiglierei di non mescolare CSS e Markup ed esternare questa regola in un CSS separato:

.edit {
    background-image: url('Icons/page_edit.png'); 
    background-position: left center; 
    background-repeat: no-repeat; 
    line-height: 16px; 
    padding: 3px 0pt 3px 22px;
}
.

e quindi applicarlo al div:

<button id="ctl00_uxBtn" value="ctl00$uxBtn" name="ctl00$uxBtn" type="submit">
  <div class="edit">Save Draft</div>
</button>
.

Ciò renderà il markup molto più pulito, conserverà la larghezza di banda ed evita gli errori come quello che hai fatto usando le citazioni corrette.

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