2009-08-12 20 views
1

Ich mische asp.net Webforms und asp.net mvc. So verwenden Webformulare ichasp.net mvc Javascript Postback

routes.IgnoreRoute aufgenommen haben ("Berichte/{* pathInfo}");

in der öffentlichen statischen void RegisterRoutes (RouteCollection Routen) -Methode.

Es scheint gut zu funktionieren. Aber Javascript Postbacks auf den asp.net Webformular Seiten funktionieren nicht. Speziell

<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> 

funktioniert nicht. Alles ist in Ordnung, bis die "document.forms [0] .submit();" Anruf, der anscheinend nichts tut. Wenn ich das asp.net MVC route mapping vollständig deaktiviere, dann funktioniert das obige Javascript gut.

+0

Welchen Wert hat das Attribut action für das erste Formular-Tag? – ZippyV

+0

Billing.aspx ist die aktuelle Seite – bjwbell

+0

ich für Sie meine Antwort aktualisiert ... – RSolberg

Antwort

2

ich gerade ein brandneues Beispielprojekt abgeschlossen und war in der Lage, dies zu arbeiten, um zu bekommen ... habe ich einen Ordner in der Wurzel meiner Projekt namens Berichte und die Billing.aspx Seite dort hinzugefügt. Ich fügte dann den Code unten zur Standardindexansicht innerhalb des Hauptordners hinzu, wie unten gezeigt.

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> 


Meine Vermutung ist, dass, obwohl Aktion des Formulars zu Billing gesetzt. aspx, es sucht nicht im richtigen Ordner. Fügen Sie "../../Reports/" vor Billing.aspx zu Ihrer Formularaktion hinzu. Da die Abrechnungsseite nicht mit dem Stammverzeichnis der MVC-Seite identisch ist, wird dies wahrscheinlich nirgendwo auf einer Post-Aktion ausgeführt.

+0

ich habe enthalten // ignorieren webforms Dateien routes.IgnoreRoute ("{} Ressource .axd/{* pathInfo}"); routes.IgnoreRoute ("{Ressource} .aspx/{* PfadInfo}"); und routes.IgnoreRoute ("Billing.aspx/{*} pathInfo"); und das Problem wurde nicht behoben – bjwbell

Verwandte Themen