2010-06-02 5 views
0

나는 AddNews.aspx라는 페이지를 가지고 코드 숨김에서 웹 방법이라고 AddNews (매개 변수) ..마스터 페이지 및 Jquery 문제?

AddNews.aspx 페이지는 마스터 페이지에서 상속됩니다 .. 그래서 난의 ContentPlaceHolder를 사용했다.

버튼이 있습니다.이 ID는 btnSave입니다.

$(function() { 
    $("[id$='_btnSave']").click(function() { 
     $.ajax({ 
      type: "POST", 
      contentType: "application/json; charset=utf-8", 
      data: $.toJSON(veriler), 
      url: "AddNews.aspx/AddNews", 
      dataType: "json", 
      success: function(result) { 
       $("#result").html('News added'); 
      }, 
      error: function() { 
       alert('Problem'); 
      } 
     }); 
    }); 
}); 
</script> 

버튼 클릭이 .. 트리거 해달라고 내가 무엇을 할 수 있습니다 : 여기

는 jQuery 코드인가? 감사.

+0

HTML을 게시 할 수 있습니까? –

답변

1

마스터 페이지에서 혼동하지 않도록하십시오. 그것은 단지 :

$('#btnSave').click(function() { 
    //ajax call like you had 
}); 
+0

ASP.NET은 컨트롤 ID를 mangle 처리합니다. 그 이유는 그가 펑키 한 선택자를 수행하는 이유입니다. – GalacticCowboy

+0

아니요, 작동하지 않습니다. 왜냐하면 버튼이 내용에 들어 있기 때문입니다. html에서는 id가 변경됩니다. – Grant83

0

당신이 아마 jQuery로 .NET 마스터 페이지를 사용에 매우 일반적인 문제가 발생했다고 생각 - 그렇게 마스터 페이지 생성 페이지의 일부입니다 때 .NET은 요소의 ID를 변경 이름 충돌을 피하십시오. 을 보면 페이지의 소스 코드가 생성 된 것이므로 ct100_panel1_btnSave과 같은 형식 일 것입니다. id 호출을 사용하려면 해당 id를 사용해야합니다. 그렇지 않으면 버튼에 클래스를 추가합니다. 그 클래스에 의해 버튼을 선택합니다 (.NET은 클래스를 munge하지 않습니다).

+0

그래, 그걸 시도 했어.하지만 여전히 작동하지 않아. – Grant83

0

단추가 WebForm 컨트롤입니까? 그렇다면 자바 스크립트가 실행되기 전에 양식을 게시하는 스크립트가 실행될 수 있습니다.

이 경우 runat = "server"속성이없는 Html 요소를 사용하십시오.

버튼의 id에 대해 알 수없는 경우 렌더링 된 HTML을 살펴보십시오.

0

는 컨트롤을 식별하는지 확인하기 위해

$("input[id$='btnSave']")... 

을보십시오.

대괄호 선택자에 대한 jQuery 설명서에는 항상 범위가 있습니다. input[selector], div[selector] 등등. 나는 항상 그것들을 그렇게 사용했기 때문에, jQuery는 범위가 지정되지 않은 속성 선택자로 무엇을해야할지 모르기 때문일 수 있습니다.

+0

내 통제를 확인하고있을거야. – Grant83

+0

@ user356787 - 클릭 이벤트가 발생하지 않는다는 것은 이벤트를 연결하지 않기 때문에 실제로 컨트롤을 올바르게 식별하지 못한다는 것을 의미합니다. 이벤트가 시작되거나 시작되지 않습니다. 무엇 이니? – GalacticCowboy

+0

간단한 방법 확인 : 메서드의 첫 번째 줄에 경고를 넣고 단추를 클릭하면 경고가 표시되는지 확인합니다. – GalacticCowboy

2

ASP.NET은 종종 서버 컨트롤의 ID를 변경하므로 Javascript에서 컨트롤 ID를 하드 코딩하는 것이 이상적이지 않습니다. 마스터 페이지의 캐스트에서 ASP.NET은 마스터 페이지의 ContentPlaceholder ID (즉, MainContent_btnSave)와 ID를 앞에 붙입니다.

할 수있는 일은 btnSave 대신 javascript : <%=btnSave.ClientId%>을 사용하여 서버 코드를 인라인으로 사용하는 것입니다.

자바 스크립트가 .ASPX 파일에있는 경우

:
$("#<%=btnSave.ClientId%>").click(function() { 
    /* ... */ 
} 

JS는 별도의 파일에있는 경우

, 그냥 변수로 버튼을 선언하고 JS 코드에서 변수를 호출합니다.

.ASPX :

var btnSave = $("#<%=btnSave.ClientId%>"); 

.JS : 당신은 C#을 사용하는 경우

그런데
$(btnSave).click(function() { 
    /* ... */ 
} 

, 대신 VB의 <%=btnSave.ClientId%><%=btnSave.ClientId()%>을 사용해야 할 수도 있습니다.

0
$(document).ready(function() { 
    $("#btnSubmit").click(function(event) { 

     // 
    }); 
}); 
1

head 섹션에서 ContentPlaceHolder를 사용하는 경우 jQuery를로드하는 행 아래에 있는지 확인하십시오.

마스터 페이지 : 또한 생성 된 마크 업을보고 ID가 귀하의 버튼이 무엇인지 확인 할 수 있습니다

<head runat="server"> 
<script src="<%=ResolveUrl("~/Scripts/jquery-1.4.2.min.js") %>"></script> 
<asp:ContentPlaceHolder ID="head" runat="server"> 
    </asp:ContentPlaceHolder> 
</head> 

. 중첩 된 마스터 페이지 나 컨트롤에 있으면 btnSave로 끝나지 않을 수 있습니다.

<asp:Content ID="HeadContent" ContentPlaceHolderID="head" runat="server"> 
<script> 
     $(function(){ 
      $('input[id*="btnSave"]').click(function(){ 
        .... 
      }); 
     }); 
</script> 
    </asp:Content> 
2

.NET Framework 4는 컨트롤에 "ClientIDMode"속성을 추가했습니다. ClientIDMode = "Static"으로 설정하면 제어 태그에서 정의한 정확한 ID를 사용할 수 있습니다.

function alertClicked(me) { alert("My ID is: " + me.id); } 

<asp:Button ID="btnAlert" runat="server" Text="Alert" OnClientClick="alertClicked(this)"/> 

--display bodycontaint_btnAlert 

<asp:Button ID="btnAlert" runat="server" Text="Alert" ClientIDMode="Static" OnClientClick="alertClicked(this)" /> 

--display btnAlert 
관련 문제