2012-10-31 13 views
16

Izusätzliche Parameter Hinzufügen bilden einreichen

<form method="post" action="/Lot/[email protected]" id="filterForm"> 

(übrigens eine Form Erklärung in meiner Razor Ansicht habe ich es so nicht Html.BeginFrom aus zu schreiben, wählte zu verwenden, weil ich ihm eine ID geben benötigt und didn ‚t wissen, wie man das mit Html.BeginFrom - aber das ist hier nicht das Thema)

Außerhalb dieser Form habe ich eine Taste, die dieses Formular abschickt (es gibt auch einen Submit-Button in der Form)

<input type="button" onclick="$('#filterForm').submit();" value="Show all" /> 
Jetzt 210

, ist das Problem, dass, wenn diese Taste, um das Formular abzuschicken verwendet wird mag ich die Aktion in Form

action="/Lot/[email protected]&showAll=true" 

zu

ändern Wie kann ich die Aktion ändern und diese zusätzlichen Parameter übergeben? Gibt es einen völlig besseren Weg, all dies zu tun?

Antwort

29

Anfügen Query-String-Parameter auf das Formular Aktion

<form method="post" action="/Lot/[email protected]" id="filterForm"> 

<input type="hidden" id="showAll" name="showAll" value=""/> 

auf dem Knopf setzen, und zu versuchen, ändern, dass zur Laufzeit ist schwierig (aber nicht unmöglich). Weit einfacher ist, versteckte Felder zu verwenden:

<form method="post" action="/Lot/LotList" id="filterForm"> 
    <input type="hidden" name="auctionEventId" value="@auctionEventId" /> 
    ... 

So, jetzt alles, was Sie tun müssen, ist ein weiteres verstecktes Feld hinzufügen für „showAll“

<form method="post" action="/Lot/LotList" id="filterForm"> 
    <input type="hidden" name="auctionEventId" value="@auctionEventId" /> 
    <input type="hidden" name="showAll" value="false" id="showAllField" /> 
    ... 

Und nur ein jquery Ereignis auf Ihrer showAll Taste anschließen:

<input id="showAllButton" type="button"/> 

jQuery:

$('#showAllButton').click(function(){ 
    $('#showAllField').val("true"); 
    $('#filterForm').submit(); 
}); 
+0

Danke für die Hilfe Jamie. –

4

wie über einen versteckten Eingang

<input type="button" onclick="submitForm()" value="Show all" /> 

auf Ihrem Skript irgendwo

function submitForm(){ 
$('#showAll').val('true'); 
$('#filterForm').submit(); 

} 
4

Ich weiß, Sie sagte, dies ist nicht das Problem, aber Sie können Attribute Html.BeginForm wie folgt hinzu:

@using (Html.BeginForm("ActionName","ControllerName", FormMethod.Post, new { id = "filterform" })){ 
2

Wenn Sie innerhalb einer Form sind, können Sie die Route zu einem Button-Element hinzufügen. Sie können die native Aktion des Formulars mit formAction und formMethod überschreiben. Sie können auch mehrere Tasten mit anderen formActions und formMethods

<form action="/somewhere" method="get"> 
 
    <input type="type" name="name" value=" " /> 
 

 

 
    <button formaction="/Lot/[email protected]&showAll=true" formmethod="post">Show All</button> 
 
</form>

0

Hallo habe ich fand das sehr gut funktionieren

@using (Html.BeginForm("ActionName","ControllerName", new { id = "filterform" },FormMethod.Post)){ 

Ich hatte müde die ‚FormMethod.Post‘ zu tun vor dem param aber es hat nicht funktioniert und hat nie den wert überschritten. Nur durch Versuch und Irrtum habe ich es gelöst und herausgefunden, dass es wie der Code sein sollte, den ich gepostet habe.

Hoffe, dass hilft

Verwandte Themen