2009-08-12 11 views
1

Je suis en train de mixer asp.net webforms et asp.net mvc. Pour utiliser les formulaires Web, j'ai inclusasp.net mvc javascript postback

routes.IgnoreRoute ("Reports/{* pathInfo}");

dans la méthode publique RegisterRoutes vide (routesCollection routes).

Cela semble fonctionner correctement. Mais les post-javascript sur les pages webform asp.net ne fonctionnent pas. Plus précisément

<script type="text/javascript"> 
function callMethod(methodName, methodArgument) 

{ 

     alert('test1'); 

     document.getElementById("methodname").value=methodName; 

     document.getElementById("methodargument").value=methodArgument;   

alert('test2'); 

document.forms[0].submit(); 

    } 

</script> 

ne fonctionne pas. Tout va bien jusqu'à la "document.forms [0] .submit();" appel qui semble ne rien faire. Si je désactive complètement le mappage de route asp.net MVC alors le Javascript ci-dessus fonctionne très bien.

+0

Quelle est la valeur de l'attribut d'action sur la première balise de formulaire? – ZippyV

+0

Billing.aspx est la page en cours – bjwbell

+0

je mis à jour ma réponse pour vous ... – RSolberg

Répondre

2

Je viens de terminer un tout nouvel exemple de projet et j'ai réussi à le faire fonctionner ... J'ai créé un dossier à la racine de mon projet appelé Rapports et ajouté la page Billing.aspx. J'ai ensuite ajouté le code ci-dessous à la vue Index par défaut dans le dossier Accueil comme indiqué ci-dessous.

Global.asax

routes.IgnoreRoute("Reports/{*pathInfo}"); 

MVC Page Views \ Home \ Index.aspx

<form method="post" action="../../Reports/Billing.aspx?tenantId=0003-0140&rentNum=0" id="myForm"> 
    <input type="text" id="sample" /><br /> 
    <input type="button" onclick="callMethod();" value="send" /> 
</form> 
<script type="text/javascript"> 
    function callMethod() 
    { 
     alert('test1'); 
     alert(document.getElementById("sample").value); 
     alert('test2'); 
     document.forms[0].submit(); 
    } 
</script> 


Je pense que même si l'action de votre formulaire est définie à la facturation. aspx, il ne le cherche pas dans le bon dossier. Essayez d'ajouter "../../Rapports/" devant Billing.aspx à l'action de votre formulaire. Étant donné que la page de facturation n'est pas dans la même racine que la page MVC, il est susceptible de ne pas aller n'importe où sur une action de publication ...

+0

J'ai inclus // ignorer les fichiers de formulaires Web routes.IgnoreRoute ("{resource} .axd/{* pathInfo}"); routes.IgnoreRoute ("{ressource} .aspx/{* pathInfo}"); et routes.IgnoreRoute ("Billing.aspx/{* pathInfo}"); et il n'a pas résolu le problème – bjwbell

Questions connexes