non ti preoccupare, siamo qui per questo.

Strano che ti faccia ancora il refresh della pagina. In teoria la modal funziona da sola; devi solo avere un pulsante che non faccia nulla. Controlla di aver pulito bene il codice, e controlla anche il sorgente della pagina HTML risultante, se rimane qulacosa agganciato al pulsante.


Per il parametro da passare, puoi agire lato client in questo modo:
1 - Devi utilizzare l'extender lato client. Quindi utilizza l'attributo BehaviorID:
codice:
<asp:ModalPopupExtender ... ... BehaviorID="ClientModalPopupExtender">
2 - Il metodo del webService deve avere un parametro con nome predefinito
codice:
public static string myWebMethod(string contextKey)
{ ... }
3 - Richiami il modalPopUp da javascript e devi settare il ContextKey (in questo esempio prendendo il valore da una casella di testo)
codice:
<asp:Button ID="btnShow" runat="server" Text="Details" OnClientClick="return showModal();" />
<input type="text" id="txtParametro" />
codice:
function showModal() 
{ 
    var modalPopup = $find('ClientModalPopupExtender'); 
    if (modalPopup != null) 
    { 
        var parametro = $get('txtParametro').value;
        modalPopup._DynamicContextKey = parametro; 
        modalPopup.show();
        return false; 
    }    
}
Fammi sapere
ciao