2011-01-12 16 views
0

Ich baue eine ASP.NET MVC Webapplikation und habe eine Frage:Daten senden von Javascript-Server

sagen, dass ich eine stark typisierte Ansicht haben, beim Auftreffen auf das Objekt (der stark Typ) einreichen wird gefüllt und an den Server gesendet.

Nun sagen, dass eine der Eigenschaften der stark typisierten nicht im Formular verwendet wird, stattdessen muss ich dies mit Javascript festlegen, wenn der Benutzer eine Schaltfläche (nicht senden Schaltfläche) drücken.

Wie mache ich das?

Antwort

2

Wie ich es verstehe, möchten Sie der Eigenschaft einen Wert zuweisen, wenn eine Taste gedrückt wird?

  1. es als versteckter Eingang hinzufügen (Beispiel verwendet Motor Razor Ansicht):

    @Html.HiddenFor(model => model.TheProperty)

  2. Erstellen Sie ein kleines jquery Skript:

<script type="text/javascript"> 
    $('document').ready(function(){ 
     // this is the id of the button that the user presses. 
     // It must have a "ID" attribute 
     $('#someButtonId').click(function() { 
      $('#TheProperty').val('Value to set'); 
     }); 
    }); 
}); 
</script> 
+0

Das sieht gut aus, ich werde es versuchen und Sie wissen lassen, ob es funktioniert. – Banshee

+0

Ich habe es jetzt ausprobiert, kann es aber nicht mit der regulären ASP MVC View Engine arbeiten? Ich habe dies der Ansicht hinzugefügt: <%: Html.HiddenFor (c => c.L)%> und dann setze ich den Wert mit jquery wie folgt: $ ('# L'). Val ('1'); Ich kann sehen, dass das L auf dem Client von 0 bis 1 gesetzt wird, aber beim Einreichen des L ist immer noch 0? – Banshee

+0

Haben Sie nach dem POST den tatsächlichen POST oder den Wert in MVC überprüft? In Google Chrome können Sie den gesamten HTTP-Datenverkehr und die tatsächlich geposteten Daten sehen. – jgauffin

1

Sie könnten AJAX verwenden, um eine Anfrage mit Javascript an den Server zu senden. jQuery hat großartige Methoden dafür, wie $.ajax, $.post, $.get. Beispiel:

$(function() { 
    $('#someButtonId').click(function() { 
     // when some button is clicked send an AJAX request: 
     $.ajax({ 
      url: '/home/someaction', 
      data: { someField: 'some value to send' }, 
      success: function(result) { 
       alert('value successfully sent to server'); 
      } 
     }); 
    }); 
}); 
+0

Sorry, ich war maby nicht klar. Das Problem besteht nicht darin, mit Javascript einzureichen, sondern eine Eigenschaft für das Objekt festzulegen, die nach dem Senden an den Server zurückgegeben wird. – Banshee