Kể từ POST
là một động từ cho một yêu cầu HTTP, điều này chỉ có ý nghĩa (như văn bản) nếu phương pháp .Save()
khởi một kết nối HTTP loopback để thích hợp .SaveAll()
tuyến đường, (như http://..../Category/SaveAll
) và vượt qua bộ sưu tập hình thức như một phần của yêu cầu. Điều này là ngớ ngẩn và không được đề nghị, vì điều này sẽ phá vỡ khả năng của bạn để đơn vị kiểm tra bộ điều khiển này.
Nếu, tuy nhiên, bạn muốn gọi .SaveAll()
và trả lại kết quả được hiển thị lại cho ứng dụng, bạn có thể sử dụng .RenderAction()
và chuyển mẫu hoặc bộ sưu tập biểu mẫu đã nhận được thông số.
Hoặc, ở phía máy chủ, chỉ cần khởi tạo trình điều khiển Danh mục và gọi phương thức .SaveAll(), một lần nữa truyền mô hình nhận được bởi tham số .Save()
.
public ActionResult Save(MyModel m)
{
Category cat = new Category();
return cat.SaveAll(m);
}
Tuy nhiên, bạn sẽ phải nhận kết quả từ cuộc gọi đó và đảm bảo cuộc gọi đó được xử lý chính xác theo chế độ xem kết quả.
Nếu đây là những gì bạn đang cố gắng làm, cần lưu ý rằng bạn thực sự nên có mã của phương pháp .SaveAll()
thực hiện lưu được tách thành lớp logic kinh doanh chuyên dụng thay vì sống trong bộ điều khiển. Tất cả các chức năng này nên, theo lý thuyết, có sẵn để sử dụng trong một bộ điều khiển khác, hoặc trong một thư viện có thể được bao gồm trong các ứng dụng khác.
Nguồn
2010-04-30 16:41:27
Tôi nghĩ rằng những gì OP đang cố gắng làm là cập nhật của mình các danh mục từ Chế độ xem sản phẩm và muốn giữ tất cả các loại này. –
Không phải điều này ... Tôi cần nếu tôi đã ở trong một hành động và tạo một bài đăng lên một hành động khác trong bộ điều khiển khác ... – AndreMiranda
@AndreMiranda, OK, nhưng không phải là mục tiêu cuối cùng để lưu danh mục của bạn? Bạn có quan tâm điều đó xảy ra miễn là điều đó xảy ra không, bằng cách sử dụng các phương pháp hay nhất? Bạn đang cố gắng để thực hiện? Nếu bạn chỉ cần gọi một phương thức điều khiển khác, điều đó có thể được thực hiện dễ dàng, mà không cần tạo một yêu cầu POST để thực hiện nó. –