Pergunta

Eu tenho um Facebook de estilo moderno controle de botão de cujo lado do cliente de marcação semelhante 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>

Este botão funciona bem com o IE e o FF usando o Visual Studio 2010 servidor web, mas quando eu implantar o aplicativo para o servidor (Windows Server 2008 IIS/7.0) eu fico "potencialmente perigoso Pedido.Formulário valor foi detectado um erro", mas apenas com o IE.Parece que o IE é passar o ctl00_uxBtn="O melhor que eu posso dizer, FF passa ctl00_uxBtn="ctl00$uxBtn" o que é perfeitamente aceitável.Existe alguma forma para forçar o IE em mais FF-como o comportamento?Eu não quero desativar a validação de solicitação.

Foi útil?

Solução 2

IE insiste em enviar o conteúdo entre <button> e </button> como o valor do botão, e não parece ser um caminho para impedi-lo.Então, nós interceptar o pedido no lado do cliente usando um manipulador de eventos onsubmit-se como tal:

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

A nossa função javascript, em seguida, verifica se o navegador é o IE e se o botão de propriedade innerHTML começa com "<".Se assim for, é de marcação e fará com que ASP.Net para elevar o "Potencialmente perigosos Pedido.Formulário de" valor de erro, por isso, vamos definir o valor da propriedade innerHTML para o valor da propriedade innerText, em seguida, enviar o formulário.A fonte para a função 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();
}

Outras dicas

Você precisa usar o bom citações:

<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>

Eu recomendo que você não se misturar CSS, e arquivos de marcação e exteriorizar esta regra em separado de CSS:

.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, em seguida, aplicá-lo para a div:

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

Isso vai fazer a sua marcação muito mais limpo, preservar a largura de banda e evitar que erros como a que você fez sobre o uso adequado cotações.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top