2009-05-13 4 views
2

jquery로 클라이언트 측 유효성 검사를 수행 한 다음 asp.net 컨트롤에 대해 수동으로 포스트 백 이벤트를 실행하는 방법을 알고 있는지 궁금합니다. 여기 Masterpage에서 포스트 백 이벤트 전에 유효성 검사

protected void Page_Load(object sender, EventArgs e) 
{ 
     Master.MenuButton += new Form.MasterPageMenuClickHandler(Master_MenuButton); 
} 

void Master_MenuButton(object sender, EventArgs e) 
    { 
     switch (Master.CurrentButton) 
     { 
      case "Save": 
       Save(); 
       break; 
      case "New": 
       Response.Redirect("ContentPage.aspx"); 
       break; 
      default: 
       break; 
     } 
    } 

또한 제어 lnkbtnSave 마스터 페이지에 뒤에

public delegate void MasterPageMenuClickHandler(object sender, System.EventArgs e); 
    public event MasterPageMenuClickHandler MenuButton; 

    protected void lnkbtnSave_Click(object sender, EventArgs e) 
    { 
     // Assign value to public property 
     _currentButton = "Save"; 

     // Fire event to existing delegates 
     OnMenuButton(e); 
    } 

    protected virtual void OnMenuButton(EventArgs e) 
    { 
     if (MenuButton != null) 
     { 
      //Invokes the delegates. 
      MenuButton(this, e); 
     } 
    } 

컨텐츠 페이지 코드 뒤에 샘플 마스터 페이지 즉

에게
<script type="text/javascript"> 
$(document).ready(function() { 
    $("#<%=lnkbtnSave.ClientID %>").click(function() { 
     alert("hello"); 
     // Do some validation 
     // If validation Passes then post back to lnkbtnSave_Click Server side Event 
     }); 
}); 
</script> 
<asp:LinkButton ID="lnkbtnSave" runat="server" onclick="lnkbtnSave_Click" ><asp:Image ID="Image3" runat="server" ImageUrl="~/images/save.gif" AlternateText="Save" />Save</asp:LinkButton> 

마스터 페이지 코드입니다 그래서 나는 어떻게 각 내용 pa부터 나가 위에있는 내용 페이지를 결정할 것입니다 ge는 유효성을 검사 할 자체 컨트롤을 갖습니다. 당신이 반대에 보면 어떤 도움

답변

2

첫 번째 질문에 대해서는 링크백을 포스트 백으로 만들려면 true를 반환하고 중지하려면 false를 반환 할 수 있어야합니다.

두 번째 질문에 대한
$(document).ready(function() {  
    $("#<%=lnkbtnSave.ClientID %>").click(function() {   
     alert("hello");   
     var isValid = false; 
     // Do some validation 
     return isValid; 
    }); 
}); 

, 각 페이지는 유효성 검사 스크립트의 자신의 버전을 추가 할 수 및 유효성을 결정하는 데 사용하는 masterpage의 기능을 가지고 :

마스터 페이지 :

$(document).ready(function() {  
    $("#<%=lnkbtnSave.ClientID %>").click(function() {     
     return pageIsValid(); 
    }); 
});  

내용 페이지 :

function pageIsValid() { 
     var isValid = false; 
     //validation logic 
     return isValid; 
    } 
+0

감사합니다 Jimmie! 네가 할 수 있다는 것을 결코 알지 못했다. – zSynopsis

4

에 대한

덕분에이 단순화 될 수있다. 유효성 검사를 수행 한 다음 다시 게시를 시작하는 대신 필요한 경우 다시 게시를 확인하고 방지 할 수 있습니다.

$('#<%= lnkbtnSave.ClientID %>').click(function(e) { 
    if (!validate()) { 
     e.preventDefault(); //will stop the page from posting back. 
    } 
}); 

당신이 정말로 당신이 명시 적으로 ASP.NET은 유효성 검사를 수행 한 후 당신을 위해 페이지에두고 __doPostBack() 함수를 호출 할 수있는 포스트 백을 시작 (그리고 그것을 다른 방법을)해야하는 경우.

// This does the exact same thing as above, but it explicitly calls __doPostBack 
// If you use the above code __doPostBack will be called automatically for you. 
$('#<%= lnkbtnSave.ClientID %>').click(function(e) { 
    if (validate()) { 
     __doPostBack('<%= lnkbtnSave.ClientID %>',''); 
    } 
    e.preventDefault(); 
}); 

이 중 하나가 설명이 필요한 경우 알려주십시오.

+0

감사합니다. 시도해 보겠습니다. – zSynopsis

관련 문제