2009-09-10 41 views
5

Thấy rằng mặc dù nhóm của chúng tôi duy trì mạng nội bộ có khách hàng người dùng được bảo đảm bật javascript, chúng tôi biết rằng chúng tôi có thể tham gia và bắt đầu sử dụng jQuery "triệt để" hơn. Hệ thống của chúng tôi là rất lớn, vì vậy mặc dù chúng tôi sử dụng các khu vực trong ứng dụng ASP.NET MVC của chúng tôi số lượng trang tuyệt đối để thêm, chỉnh sửa, xóa và xem bộ dữ liệu trên mỗi hệ thống phụ của một khu vực thực sự là khá lớn. Một hệ thống con của một khu vực có thể có khoảng hai mươi bảng dữ liệu. Nếu có hai mươi bảng dữ liệu và bạn có các trang riêng lẻ để thêm, chỉnh sửa, xóa và xem chúng có nghĩa là có tổng số trang. Bây giờ hãy tưởng tượng có hai hệ thống con cho mỗi khu vực, sau đó một khu vực sẽ có 20 * 60 trang và chúng tôi có khoảng 15 khu vực trên Mạng nội bộ của chúng tôi. Bạn nhận được điểm, nó rất lớn.jQuery CRUD trong ASP.NET MVC

Chuyển sang điểm thực, tôi muốn cắt giảm điều này bằng cách sử dụng khả năng jQuery có bảng dữ liệu trên trang, nhấn "xóa" và nó cho tôi hộp thoại xóa bằng nút xác nhận sau đó gửi biểu mẫu, chuyển hướng đến hành động chính xác và thực hiện công việc cho tôi. Bây giờ tôi cần một số hướng dẫn trong các lĩnh vực sau:

  1. Nếu tôi muốn xóa mà không đăng lại bằng ASP.NET MVC, quy trình để thực hiện điều này là gì? Điều này bao gồm nhấn xóa, nó sẽ tắt và kiểm tra nó có thể xóa (mối quan hệ FK phải được xử lý theo cách chính xác), sau đó nếu có thể xóa nó và xóa hàng khỏi bảng trong dạng xem, tất cả mà không làm mới trang.
  2. Làm cách nào để gọi hành động xóa khỏi quá trình không đồng bộ bằng jQuery? Là nó khôn ngoan để làm như vậy? Thông thường chúng tôi sử dụng Html.ActionLink. Tôi sẽ phải quấn nó trong một hình thức?
  3. Tương tự như vậy để chỉnh sửa và cập nhật, một lần nữa, cách tốt nhất để làm điều này là gì?

Tôi đang tìm một giải pháp thanh lịch và điều gì đó không khó áp dụng cho mọi trang tôi phải thực hiện việc này. Bất kỳ đầu vào sẽ được nhiều đánh giá cao.

+1

Chỉ cần tò mò có bạn nhìn vào dữ liệu Khung động từ MS? Tôi nghĩ rằng nó có thể hỗ trợ MVC nhưng không tích cực. Nếu tôi hiểu chính xác nó sẽ cắt giảm số lượng trang của bạn. Như tôi đã nói chỉ tò mò nếu bạn nhìn nó cho trang web này. – JoshBerke

+2

Dữ liệu động không hoạt động tốt với MVC, nhưng MVC 2 có chế độ xem theo khuôn mẫu mặc định, cung cấp cho bạn các phần hữu ích hơn của Dữ liệu động được tích hợp. –

Trả lời

3

Tôi đang làm việc trên một dự án có sử dụng các liên kết đến để bắn ra những hành động xóa thông qua AJAX POST (không postback).

$("a.deleteLink").click(function(event) 
{ 
    event.preventDefault(); 
    if (confirm("Are you sure you want to delete this section?")) 
    { 
     //TODO Display processing indicator 

     var myId = /* id of element */ ; 

     $.post("/Section/Delete", { id: myId }, function(data) 
     { 
      if (data == "Success") 
      { 
       //handle success 
       //TODO Fade out element using .fadeOut() 
      } 
      else 
      { 
       //handle error 
      } 
     }); 
    } 
}); 

Phương pháp điều khiển chỉ đơn giản là trong /Controllers/SectionController.cs. Chỉ chấp nhận POST là bất kỳ hành động nào thay đổi cơ sở dữ liệu.

private SectionRepository secRepo = new SectionRepository(); 

    [AcceptVerbs(HttpVerbs.Post)] 
    public ActionResult Delete(long id) 
    { 
     Section sec = secRepo.GetById(id); 

     secRepo.Delete(sec); 
     secRepo.Save(); 

     return Content("Success"); 
    } 
+1

Tôi nghĩ rằng điều này có vẻ tốt đẹp. Tuy nhiên, tôi cho rằng '// TODO Display indicator indicator' của bạn nằm trên một dòng trên/trước hành động' .post() 'chứ không phải trong hàm gọi lại ở đâu (nó sẽ chỉ kích hoạt * sau * hành động của bạn đã hoàn thành) , không phải trong khi bạn đang chờ đợi ...) – Funka

+1

Oooh, điều này có vẻ tốt. Tôi chưa từng thấy 'return Content (" message ");' trước đó. Làm thế nào bạn làm 'if (confirm (" message ") == true)'? Tại sao không chỉ 'if (confirm (" message "))'? – Kezzer

+0

Các bạn nói đúng. Điều này vẫn còn rất sớm "nhanh chóng và bẩn" mã. Nội dung trả về ("Thành công") trong bộ điều khiển không được hiển thị. Chỉ cần một cái gì đó để cho javascript biết nó đã thành công. Nếu bất cứ ai có đề xuất cho những cách tốt hơn để kiểm tra xem một bài viết ajax là thành công cho tôi biết. Tôi đã cập nhật mã mẫu một chút để phản ánh các mục này. –

2

Chad Myers có số good article về điều này.

Cũng one từ Dino Esposito.

+0

Dino có vẻ khá thông tin và đầy đủ. Tuy nhiên, tôi sẽ phải đọc tốt hơn về nó sau này. – Kezzer

3

Chỉ cần thực hiện xem video trên một số khuôn mẫu mà bạn có thể nhận được cho ASP.NET MVC với Subsonic. Trong khi tôi vẫn chưa thực hiện điều này hoặc thậm chí đã thử nó ra, nó trông đáng kinh ngạc! Hãy xem here.


Tôi không chắc chắn nếu điều này là một lựa chọn khả thi cho bạn hay không, nhưng gần đây chúng tôi đã có một nhu cầu tương tự như của bạn và chúng tôi phát hành ứng dụng chính của chúng tôi như một ứng dụng ASP.NET MVC (sử dụng jQgrid) và sau đó một ứng dụng ASP.NET Web Forms thứ cấp cho các tính năng Quản trị của chúng tôi bằng cách sử dụng Dữ liệu động. Điều này đã làm việc rất tốt và tiết kiệm cho chúng tôi rất nhiều thời gian.

Dường như DynamicData and MVC sẽ đến với nhau trong một số bản phát hành tiếp theo.

đọc khác ...
* David Hayden
* rbqsoft
* Sharp Architecture Wiki

0

Nếu bạn cũng muốn ném hộp thoại jQuery để đảng, Ricardo Covo post điều này không một công việc tốt

enter image description here

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