2009-06-07 35 views
24

Tôi có một hình thức trên một quan điểm ASP.Net MVC của tôi mà tôi tạo ra bằng cách sử dụng đoạn mã sauASP.Net MVC, Gửi một hình thức sử dụng javascript

<% using (Html.BeginForm(null, null, FormMethod.Post)) 

Sử dụng mã này, tôi đã không kiểm soát như xa như Tôi biết thiết lập tên của biểu mẫu. Bây giờ tôi đang cố gắng viết một hàm javascript để gửi biểu mẫu, điều này có thể không biết tên của biểu mẫu không?

Cảm ơn

Trả lời

53

Bạn có thể sử dụng jquery để gửi biểu mẫu:

<% using (Html.BeginForm(null, null, FormMethod.Post, new { id = "myForm"})) { %> 

(phần cuối cùng là cho tham số htmlAttributes)

chỉ làm điều này:

$("#myForm").submit(); 

và đừng quên bao gồm jquery-1.2.6.js đi kèm với mvc (hoặc sử dụng phiên bản cao hơn).

+0

Tôi thích cách MVC dễ dàng thực hiện những việc như thế này. –

+0

Hoặc bạn có một khung hoặc địa điểm đã thay đổi một chút kể từ năm 2009! Đây là những gì làm việc cho tôi bằng cách sử dụng cú pháp Razor: ** @ using (Html.BeginForm (null, null, FormMethod.Post, mới {id = "form"})) ** [Edit: Chỉ cần chú ý ajbeaven đã chỉ ra điều này trong một câu trả lời khác] –

2

Nếu bạn chỉ có một hình thức trên trang đó, bạn có thể truy cập vào các hình thức bằng cách sử dụng:

document.forms[0]. 

Vì vậy, bạn có thể thêm một liên kết:

<a href="javascript:document.forms[0].submit()">submit form</a> 
1

Nếu bạn cần phải thiết lập tên của biểu mẫu, sử dụng tham số htmlAttributes đối tượng của phương thức BeginForm.

<% using 
    (Html.BeginForm(null, null, FormMethod.Post, 
    new {name="MySuperForm"})) %> 

Để gửi biểu mẫu thông qua javascript, hãy kiểm tra this post. Có thể hữu ích.

1

giải pháp đơn giản này gửi biểu mẫu Ajax mà không hậu lại

<a href="#" onclick="$('#sbmt').trigger('click'); return false">Generate</a> 
<input id="sbmt" type="submit" style="visibility: hidden" /> 

trình trong IE và Firefox.

9

Nếu bạn muốn sử dụng jQuery mà không đặt tên cho các hình thức, và bạn sẽ chỉ có một hình thức trên trang web, bạn chỉ có thể thêm một liên kết như thế này vào trang của bạn:

<a href="#" class="submitForm">Submit</a> 

Và sau đó thêm jQuery này mà sẽ cấp điện cho liên kết để gửi mỗi dạng:

$(document).ready(function() { 
    $("a.submitForm").click(function() { 
     $("form").submit(); 
    }); 
}); 

Vì vậy, đây là một cách để làm việc đó (cách tôi chỉ làm nó trên trang web của tôi) mà không yêu cầu bạn đặt tên cho mẫu - miễn là bạn chỉ có một. Nói như vậy, bạn có thể muốn gửi nhiều biểu mẫu ..

+0

Giải pháp slick. yêu câu trả lời này. +1 – dblood

+0

'.submit()' gây ra chuyển hướng đến khung nhìn được trả về bằng phương thức 'POST'. Có thể gửi mà không có chuyển hướng không? – Yoda

+0

Bạn có thể yêu cầu bộ điều khiển trả về cùng một chế độ xem với các dữ liệu khác nhau và sau đó hiển thị cho người dùng một số loại phản hồi.Nếu bạn không muốn trang tải lại, bạn có thể bỏ hoàn toàn biểu mẫu và liên kết mô hình xem Knockout với trang thay vào đó, sau đó đăng dữ liệu lên bộ điều khiển bằng cách sử dụng cuộc gọi jQuery ajax - cho phép bạn đăng với bộ điều khiển mà không cần đăng một biểu mẫu theo nghĩa cổ điển. –

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