2009-05-12 29 views
18

Tôi có ứng dụng ASP.NET MVC mở ra chế độ xem "Yêu cầu" trong cửa sổ trình duyệt mới. Khi người dùng gửi biểu mẫu, tôi muốn cửa sổ đóng lại. Mã RequestController của tôi trông như thế nào để đóng cửa sổ sau khi lưu thông tin yêu cầu? Tôi không chắc chắn hành động của bộ điều khiển sẽ trở lại.Làm thế nào để bạn đóng một trang ASP.NET MVC khỏi bộ điều khiển?

Trả lời

25

Bạn có thể trả về Chế độ xem có javascript sau (hoặc bạn có thể trả về kết quả JavaScript) nhưng tôi thích cái cũ hơn.

public ActionResult SubmitForm() 
{ 
    return View("Close"); 
} 

Xem cho Close:

<body> 
    <script type="text/javascript"> 
     window.close(); 
    </script> 
</body> 

Dưới đây là một cách để làm điều đó trực tiếp trong điều khiển của bạn, nhưng tôi khuyên chống lại nó

public ActionResult SubmitForm() 
{ 
    return JavaScript("window.close();"); 
} 
+1

Tò mò: tại sao bạn sẽ tham mưu chống các giải pháp điều khiển chỉ? – gfrizzle

+5

Bạn đang thao tác với giao diện người dùng bằng cách đóng cửa sổ. Không có vẻ như một trách nhiệm điều khiển. – womp

+3

Tôi vừa cố trả lại JavaScript và nó không hoạt động. Nó chỉ hiển thị "window.close();" trên màn hình. Tôi đọc ở một nơi khác mà bạn nên gọi hành động này bằng cách sử dụng Ajax nhưng tôi đã không thể kiểm tra nó. Chỉ cần đưa đầu lên. – Aries51

2

Có vẻ như bạn có thể trở lại một gần như trống rỗng Xem mẫu chỉ đơn giản là có một số javascript trong tiêu đề mà chỉ cần chạy "window.close()".

3

Giống như ví dụ:

[HttpPost] 
public ActionResult MyController(Model model) 
{ 
    //do stuff 
    ViewBag.Processed = true; 
    return View(); 
} 

Quan điểm:

<%if(null!=ViewBag.Processed && (bool)ViewBag.Processed == true){%> 
<script> 
    window.close(); 
</script> 
<%}%> 
-1

Sử dụng bạn này có thể đóng cửa sổ như thế này:

return Content("&lt;script language='javascript'>window.close();&lt;/script>"); 
+0

Đối với tôi, điều này chỉ trả lại tập lệnh dưới dạng chuỗi và hiển thị nó, không chạy nó. –

+4

trả về Nội dung (""); –

0

này đã làm việc cho tôi để đóng cửa sổ.

Bộ điều khiển:

return PartialView("_LoginSuccessPartial"); 

Xem:

<script> 
    var loginwindow = $("#loginWindow").data("kendoWindow"); 
    loginwindow.close(); 
</script> 
Các vấn đề liên quan