JavaScript를 사용하여 ASP.NET 레이블의 가시성을 변경합니다.

StackOverflow https://stackoverflow.com/questions/7773

  •  08-06-2019
  •  | 
  •  

문제

표시되지 않는 asp:button이 있는 ASP.NET 페이지가 있습니다.페이지에 렌더링되지 않기 때문에 JavaScript로 표시할 수 없습니다.

이 문제를 해결하려면 어떻게 해야 합니까?

도움이 되었습니까?

해결책

클라이언트 측에서 이를 조작해야 하는 경우 서버 측에서 Visible 속성을 사용할 수 없습니다.대신 CSS 표시 스타일을 "없음"으로 설정하세요.예를 들어:

<asp:Label runat="server" id="Label1" style="display: none;" />

그런 다음 다음을 사용하여 클라이언트 측에 표시되도록 할 수 있습니다.

document.getElementById('Label1').style.display = 'inherit';

다음을 사용하여 다시 숨길 수 있습니다.

document.getElementById('Label1').style.display = 'none';

실제로는 ClientID가 "Label1"보다 더 복잡할 수 있다는 점에 유의하세요.서버측 ID가 다를 경우 getElementById와 함께 ClientID를 사용해야 합니다.

다른 팁

이 시도.

<asp:Button id="myButton" runat="server" style="display:none" Text="Click Me" />

<script type="text/javascript">
    function ShowButton() {
        var buttonID = '<%= myButton.ClientID %>';
        var button = document.getElementById(buttonID);
        if(button) { button.style.display = 'inherit'; }
    }
</script>

이 작업을 수행하려면 포스트백이 필요하므로 서버측 코드를 사용하지 마세요.Visibility="false"를 사용하는 대신 버튼을 숨기는 CSS 속성을 설정할 수 있습니다.그런 다음 자바스크립트에서 버튼을 다시 표시하고 싶을 때마다 해당 속성을 다시 전환하세요.

버튼이 Naming Container 컨트롤 내에 있는 경우 서버 ID와 다를 수 있으므로 ClientID가 사용됩니다.여기에는 다양한 종류의 패널이 포함됩니다.

계속해서 무엇을 데이브 워드 말했다:

  • 설정할 수 없습니다. 보이는 컨트롤이 렌더링되지 않으므로 속성을 false로 설정합니다.
  • 당신은 스타일 그것을 설정하는 속성 표시하다 에게 없음.

페이지/컨트롤 디자인

<asp:Label runat="server" ID="Label1" Style="display: none;" />

<asp:Button runat="server" ID="Button1" />

코드 비하인드

로드 섹션 어딘가에:

Label label1 = (Label)FindControl("Label1");
((Label)FindControl("Button1")).OnClientClick = "ToggleVisibility('" + label1.ClientID + "')";

자바스크립트 파일

function ToggleVisibility(elementID)
{
    var element = document.getElementByID(elementID);

    if (element.style.display = 'none')
    {
        element.style.display = 'inherit';
    }
    else
    {
        element.style.display = 'none';
    }
}

물론 전환을 원하지 않고 버튼/라벨만 표시하려면 이에 따라 자바스크립트 메소드를 조정하세요.

여기서 중요한 점은 해당 정보를 보내야 한다는 것입니다. ClientID 클라이언트 측에서 조작하려는 컨트롤을 전역 변수를 설정하거나 내 예에서처럼 함수 매개변수를 통해 자바스크립트 파일에 추가합니다.

당신은 조심해야합니다 XSS 이런 일을 할 때:

document.getElementById('<%= Label1.ClientID %>').style.display

이 경우 누구도 Label1의 ClientID를 변조할 수 없을 가능성이 있지만 안전을 위해 다음 중 하나를 통해 해당 값을 전달하는 것이 좋습니다. AntiXss 라이브러리의 행동 양식:

document.getElementById('<%= AntiXss.JavaScriptEncode(Label1.ClientID) %>').style.display

이것이 내가 찾은 가장 쉬운 방법입니다.

        BtnUpload.Style.Add("display", "none");
        FileUploader.Style.Add("display", "none");
        BtnAccept.Style.Add("display", "inherit");
        BtnClear.Style.Add("display", "inherit");

Else에는 그 반대가 있으므로 표시도 처리합니다.이는 페이지의 로드 또는 페이지의 컨트롤을 새로 고치는 메서드에 포함될 수 있습니다.

페이지가 로드될 때까지 기다린 다음 버튼 표시를 없음으로 설정하면 작동합니다.그런 다음 나중에 표시되도록 할 수 있습니다.

Visible 속성이 true로 설정되어 있는지 확인하세요. 그렇지 않으면 컨트롤이 페이지에 렌더링되지 않습니다.그런 다음 스크립트를 사용하여 조작할 수 있습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top