2012-10-31 32 views
16

Tôi có một mẫu tờ khai theo quan điểm của Razor tôiThêm tham số bổ sung để gửi biểu mẫu

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

(Ngẫu nhiên, tôi đã chọn để viết nó ra như thế này hơn là sử dụng Html.BeginFrom vì tôi cần thiết để cung cấp cho nó một id và didn 't biết làm thế nào để làm điều đó với Html.BeginFrom - nhưng đó không phải là vấn đề ở đây)

Bên ngoài của mẫu đơn này tôi có một nút mà nộp mẫu đơn này (đó cũng là một nút gửi theo hình thức)

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

Bây giờ, vấn đề là nếu nút này được sử dụng để gửi biểu mẫu tôi muốn hành động theo hình thức chuyển sang

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

Làm thế nào để thay đổi hành động và thông qua tham số bổ sung này? Có một cách hoàn toàn tốt hơn để làm tất cả điều này?

Trả lời

29

Phụ thêm các thông số chuỗi truy vấn vào các hành động hình thức, và cố gắng để thay đổi thời gian chạy là khó khăn (nhưng không phải là không thể). Viễn dễ dàng hơn là sử dụng trường dữ liệu ẩn:

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

Vì vậy, bây giờ tất cả bạn phải làm là thêm một trường ẩn để "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" /> 
    ... 

Và chỉ treo lên một sự kiện jquery vào nút showAll của bạn:

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

jQuery:

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

Cảm ơn sự giúp đỡ Jamie. –

4

thế nào về cách đặt một đầu vào ẩn

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

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

vào nút của bạn

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

trên kịch bản của bạn ở đâu đó

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

} 
4

Tôi biết bạn nói đây không phải là vấn đề nhưng bạn có thể thêm các thuộc tính để Html.BeginForm như thế này:

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

Nếu bạn đang trong một hình thức bạn có thể thêm các tuyến đường đến một yếu tố nút. Bạn có thể ghi đè hành động gốc của biểu mẫu bằng cách sử dụng formAction và formMethod. Bạn cũng có thể có nhiều nút với formActions khác và 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

Xin chào Tôi thấy điều này làm việc rất tốt

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

tôi đã mệt mỏi để làm 'FormMethod.Post' trước param nhưng nó không hoạt động và không bao giờ truyền giá trị. Chỉ có thông qua thử nghiệm và lỗi tôi đã quản lý để giải quyết nó và tìm ra rằng nó phải giống như mã tôi đăng.

Hy vọng rằng sẽ giúp

Các vấn đề liên quan