2016-10-27 3 views
-1

Ich erbte eine ASP.Net WebPages mit Razor-Projekt, das ich verbessern muss. Beim Post muss ich überprüfen, ob der Benutzer einen Fragebogen ausgefüllt hat, und wenn nicht, öffne einen Dialog und sage ihm, dass er ihn vervollständigen soll, bevor er ihn auf die Fragebogenseite weiterleitet. Die Zustandsprüfung funktioniert ebenso wie die Antwort.Redirect. Der Popup-Code, den ich von here bekommen habe, funktioniert nicht. Irgendwelche Ideen. Hier ist der Code:Modal Pop-up funktioniert nicht

Im Kopf des doc, ich habe dies:

<link href="~/Content/jquery-ui-1.12.1.css" rel="stylesheet" type="text/css" > 
<script src="~/Scripts/jquery-1.12.4.js"></script> 
<script src="~/Scripts/jquery-ui-1.12.1.js"></script> 

und im Körper:

if (IsPost && !questionnaireCompleted) // this works 
{ 
<div id="dialog" title="Incomplete Questionnaire"> 
    <p>You must complete the questionnaire before you can save!</p> 
</div> 

<script type="text/javascript"> 
    $(function() { 
     $("#dialog").dialog(); 
    }); 
</script> 

    Response.Redirect("~/Sections/Questionnaire?id=" + id); // this works 
} 
+1

Leider ist verwirrend scheint. Es scheint, dass Sie versuchen, basierend auf der Bedingung ein Markup auf der Seite auszugeben, aber dann sofort auf eine andere Seite umzuleiten, anstatt die aktuelle Seite mit neuem Markup zurückzugeben. Wie erwarten Sie, dass das funktioniert? – Andrei

+0

Ich versuche den Benutzer zu benachrichtigen, dass er Änderungen auf einer anderen Seite vornehmen muss, bevor er sie dorthin leitet, um die Änderungen vorzunehmen. Ich werde es ihnen überlassen, hierher zu navigieren, wenn sie dort fertig sind. –

+0

Aber das ist nicht, was Code dann tut. Dies ist wiederum nur auf der Serverseite, sodass Sie sofort umleiten. Was Sie vielleicht tun möchten, ist, diese Antwort zu entfernen. Redirect, zurück das Markup mit dem Skript, und dann auf der Client-Seite zeigen Sie das Popup und leiten Sie dorthin um – Andrei

Antwort

0

Sie müssen möglicherweise den div-Tag und den Script-Tag wechseln , da das Skript/die Funktion vor dem eigentlichen Modal geladen wird.

+0

Das hat auch nicht funktioniert. –

0

Sind Sie diese Skripte und CSS einschließlich:

<link rel="stylesheet" href="//code.jquery.com/ui/1.12.1/themes/base/jquery-ui.css"> 
<link rel="stylesheet" href="/resources/demos/style.css"> 
<script src="https://code.jquery.com/jquery-1.12.4.js"></script> 
<script src="https://code.jquery.com/ui/1.12.1/jquery-ui.js"></script> 
+0

Ich habe die letzten zwei js-Dateien lokal kopiert und die erste CSS hinzugefügt. Ich sehe die style.css nirgendwo im Projekt. –

0

Verstanden eine Hilfsfunktion mit:

@helper SectionCheck(string id) 
{ 
<div> 
    <div id="dialog" title="Incomplete MRB Form" data-param="@id"> 
     <p>You must complete the questionnaire before you can save!</p> 
    </div> 

    <script type="text/javascript"> 
     $(function() { 
      var ID = document.getElementById('dialog').getAttribute(['data-param']); 
      $("#dialog").dialog({ 
       modal: true, 
       buttons: { 
        "OK": function() { 
         $(this).dialog("close"); 
         window.location = "MRB?id=" + ID; 
        } 
       } 
      }); 
     }); 
    </script> 
</div> 
}