質問

私はクライアント側マークアップのようなFacebookスタイルの現代ボタン制御を持っています:

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

このボタンは、Visual Studio 2010 Webサーバを使用してIEとFFの両方でうまく機能しますが、アプリケーションをサーバーに展開する(Windows Server 2008 / IIS 7.0)「潜在的に危険な要求値が検出されました」と表示されます。エラー、しかし、IEとのみ。IEがctl00_uxbtn="

役に立ちましたか?

解決 2

IEはボタンの値として<ボタン>との間の内容を送信することを主張し、それを防止する方法はありません。そのため、OnSubmitイベントハンドラを使用してクライアント側でリクエストを傍受します。

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

私たちのJavaScript関数は、ブラウザがIEのかどうかをチェックし、ボタンのinnerhtmlプロパティが "<"で始まる場合もしそうなら、それはマークアップであり、ASP.NETが「潜在的に危険なrequest.form値」というエラーを発生させるため、InnerHtmlプロパティの値をInnerTextプロパティの値に設定してからフォームを送信します。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();
}
.

他のヒント

適切な引用符を使用する必要があります。

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

CSSとマークアップを混在させず、この規則を別の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;
}
.

とDIVに適用します。

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

これはあなたのマークアップを多くのクリーナーにし、帯域幅を維持し、あなたが適切な引用符を使って作ったもののようなエラーを避けます。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top