2009-08-19 5 views
0

Ich möchte jQuery-Dialog verwenden, um Code zu ersetzen, den ich gerade in einer ASP.NET MVC-Anwendung verwende. Der alte Code verwendete "Senden" -Schaltflächen mit unterschiedlichen "Wert" -Einstellungen. Ich würde auch gerne wissen, ob es einen besseren Ansatz gibt.Wie man mit jQuery-Dialog mit Schaltflächen mit anderen Werten einreicht

Dies ist ein Beispiel für den vorhandenen Code in der Ansicht:

 <%using (Html.BeginForm("SubmitValue", "MyController", FormMethod.Post)) 
    { %> 
     <span class="field-description">My Value: </span> 
     <input id="myTextValue" maxlength="6" name="myValue" type="text"/> 
     <%=Html.Hidden("myModel.myProperty1", Model.PropertyValue1) %> 
     <%=Html.Hidden("myModel.myProperty2", Model.PropertyValue2) %> 
     <div class="pageaction button"> 
      <strong> 
       <input name="submitButton" type="submit" value="Save"/> 
      </strong> 
      <strong> 
       <input name="submitButton" type="submit" value="Delete"/> 
      </strong> 
      <strong> 
       <input type="button" value="Cancel" /> 
      </strong> 
     </div> 
    <% } %> 

Der Regler den Wert der Taste gedrückt einreichen:

[AcceptVerbs(HttpVerbs.Post)] 
    public ActionResult SubmitValue(MyModel model, string submitButton) 
    { 
     _request.myProperty1= model.PropertyValue1; 
     _request.myProperty2= model.PropertyValue2; 
     if (submitButton == "Save") 
     {_myService.UpdateValue(_request);} 
     else 
     {_myService.DeleteValue(_request);} 

     return View("MyView", _request); 
    } 

Für die jQuery UI, würde ich gerne den "buttons" -Teil des Codes verwenden, um die Submit-Werte zu verarbeiten.

$(function() { 
$("#dialogWindow").dialog({ 
    bgiframe: true, 
    autoOpen: false, 
    height: 200, 
    modal: true, 
    open: function(e, ui) {    
     $("#dialogWindow :input[name='myValue']").val(currentValue); 
    }, 
    buttons: { 
     'Save': function() { 
      // TODO: submit as if a submit button with the value 'Save' is used 
      $(this).dialog('close'); 
     }, 
     'Delete': function() { 
      // TODO: submit as if a submit button with the value 'Delete' is used 
      $(this).dialog('close'); 
     }, 

     Cancel: function() { 
      $(this).dialog('close'); 
     } 
    }, 
    close: function() { 
     //close code 
    } 
}); 

});

Antwort

0

Ich hatte gerade einen kurzen Scan Ihrer Frage und während ich denke, was Sie versuchen zu tun ist, kann ich nicht denken, dass es der richtige Weg ist.

Die ganze Idee sollte eine Trennung von Bedenken haben. Ich denke, wenn Sie beginnen, die Funktion zu einer einzigen Aktion zusammenzufassen, dann hat diese Aktion die Möglichkeit, überfüllt und schwer zu warten.

Ich denke, Sie sollten versuchen, mehr in Richtung eines Modells, wo jeder Schaltfläche Senden würde seine eigenen jQuery ActionResult aufrufen. Das führt dann zur Trennung von Bedenken, hält das ActionResult schön und ordentlich und entschlüsselt den Code.

Es gibt keinen Grund, warum Sie dann nicht aus dem Aktionsergebnis eine andere Methode aufrufen können, die alle Aktionen des Absendens kapselt, aber dann gehen Sie wieder den dunklen Weg zurück, um durcheinander zu kommen.

Auch habe ich gerade festgestellt, dass Ihr Dialogfeld ziemlich viel tut und es auch das Risiko von überladen wird. Ich, und das ist nur eine persönliche Sicht, hätte lieber drei Dialogfenster, die jeweils ihr eigenes Ding machen. Ich würde meine CSS-Setup so eine Änderung dort über alle von ihnen reflektiert. Dann würde jeder Dialog einen eigenen ActionResult schreiben.

Wenn ich Ihre Frage fürchterlich falsch verstanden habe, lassen Sie es mich wissen und ich werde versuchen, weiter zu helfen.

Verwandte Themen