2013-03-14 21 views
7

Làm cách nào để có được giá trị từ hộp văn bản "Danh sách email" và gửi cho người kiểm soát? Tôi luôn sử dụng biểu mẫu web và đây là liên hệ đầu tiên của tôi với mvc.chuyển giá trị từ hộp văn bản đến bộ điều khiển

Xem:

@Html.TextBox("EmailList") 
    @Html.Action("SendEmails") 

Bộ điều khiển:

public ActionResult SendEmails() 
    { 

     // some operations on EmailList 
    } 

EDIT


Và những gì nếu tôi chỉ cần để mở phương pháp đơn giản 'onclick'? Không hành động. ví dụ -

 public void SendEmails() 
     { 
      // some operations on EmailList 
     } 

Trả lời

4

Vì vậy, để có được giá trị trở lại vào bộ điều khiển bạn sẽ cần phải phát hành một POST đầu tiên vì vậy bạn sẽ muốn thiết lập tác vụ điều khiển của mình cho một số POST:

[HttpPost] 
public ActionResult SendEmails(string EmailList) 
{ 
} 

cũng thông báo rằng tôi đã thêm thông số EmailList được đặt tên giống hệt như điều khiển trên biểu mẫu. Tiếp theo chúng ta cần phải chắc chắn HTML của bạn được thiết lập đúng, vì vậy khi bạn xây dựng các form kiểm soát xây dựng nó như thế này:

@Html.BeginForm("SendEmails", "{ControllerNameHere}", FormMethod.Post) 

và sau đó hộp văn bản của bạn, cũng để lại một mình, nó sẽ chỉ làm việc tốt.

+0

cảm ơn, vui lòng xem chỉnh sửa. – whoah

+0

Và hãy cho tôi biết, cách ngăn chặn biểu mẫu này từ nút "f5" hoặc tải lại trang? – whoah

+0

@whoah, bạn muốn ngăn người dùng tải lại trang? Bạn đang nói trong quá trình gửi? Hay bạn đang nói hoàn toàn? –

1

Có một mô hình

public class EmailSubmitModel 
{ 
    public string EmailList {get; set;} 
} 

Trong điều khiển của bạn

public ActionResult SendEmails(EmailSubmitModel emailSubmitModel) 
{ 


} 
+0

cảm ơn, vui lòng xem chỉnh sửa. – whoah

3

Nếu bạn muốn vượt qua EmailList đến một phương pháp thì bạn nên có một hình thức xung quanh với textfield email

@using (Html.BeginForm("","")) 
{ 
    @Html.TextBox("EmailList") 
    <input type="submit" id="emailSubmit" value="Submit Email" /> 
} 

Sau đó viết một kịch bản để ghi đè lên các hành vi hình thức mặc định

<script type="text/javascript"> 
$(function() { 
     $("form").submit(function (e) { 

      e.preventDefault(); 
      var emailValue = $("#EmailList").val(); 
      $.ajax({ 
       url: '/Home/SendEmails', 
       data: { text: emailValue } 
      }); 
     }); 
    }); 
</script> 

Bây giờ bạn có thể thêm thông số vào phương pháp của mình như sau:

public void SendEmails(string text) 
     { 
      string email=text; 
      //or you can look into the Request.Form or Request.Querystring 
     } 

Hy vọng điều này sẽ giúp

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