2012-10-31 10 views
16

mam deklarację formularz moim zdaniem RazorDodanie dodatkowego parametru, tworząc przedstawienia

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

(Nawiasem mówiąc, zdecydowałem się napisać go w ten sposób, zamiast używać Html.BeginFrom bo potrzebne, aby nadać mu identyfikator i nie zrobił „t wiedzieć, jak to zrobić z Html.BeginFrom - ale to nie jest problem tutaj)

Poza tym formularzu mam przycisk, który złoży tego formularza (istnieje również przycisk złożyć w formie)

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

Teraz problemem jest to, że jeśli ten przycisk służy do przesłania formularza chcę działanie w formie, aby zmienić

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

Jak mogę zmienić akcję i przekazać ten dodatkowy parametr? Czy istnieje całkowicie lepszy sposób robienia tego wszystkiego?

Odpowiedz

29

Dołączanie parametrów ciągu kwerendy na działania formularza i próbuje zmiana w czasie wykonywania jest trudna (ale nie niemożliwa). Znacznie łatwiej jest używać ukrytych pól Więc teraz

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

wszystko co musisz zrobić, to dodać kolejne ukryte pole dla „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" /> 
    ... 

I właśnie zahaczyć zdarzenie jquery na swoim przycisku ShowAll:

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

jQuery:

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

Dzięki za pomoc Jamie. –

4

jak o umieszczenie ukryte wejście

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

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

na przycisk

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

na skrypcie gdzieś

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

} 
4

Wiem, że powiedział to nie jest problem, ale można dodać atrybuty Html.BeginForm tak:

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

Jeśli jesteś w formie można dodać trasę do elementu przycisku. Można zastąpić natywną akcję formularza za pomocą metody formAction i formMethod. Można też mieć wiele przycisków z innymi formActions i 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

Witam Znalazłem to działało bardzo dobrze

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

miałem zmęczony zrobić '' FormMethod.Post przed paramem, ale nie zadziałało i nigdy nie przekazało wartości. Tylko dzięki próbom i błędom udało mi się go rozwiązać i odkryłem, że powinien to być kod, który napisałem.

Nadzieję, że pomaga

Powiązane problemy