Tôi muốn tạo phần đầu HTML trong một hành động con; trong khi trang có nhiều hành động con khác. Phần đầu html phụ thuộc vào các hành động khác để xác định tệp js/css nào nên được bao gồm. Các hành động con khác nhau có thể chia sẻ cùng một tệp js/css; và các trang khác nhau có sự kết hợp khác nhau của css/js, vì vậy có một lý do để làm điều đó. Đây là mã mẫu của tôi:Làm thế nào để thay đổi chuỗi các hành động con trong MVC
Layout.cshtml:
<html>
<head>
@RenderZone("header")
</head>
<body>
@RenderZone("zone1")
@RenderZone("zone2")
@RenderZone("zone3")
</html>
Mỗi vùng có 1 hoặc nhiều hành động con.
RenderZone cũng là một hành động. Chế độ dữ liệu:
Model = GetAllChildActions(zoneName)
Quan điểm RenderZone:
foreach(var m in Model)
@html.action(controller = m.controller, action = m.action)
Bởi vì vùng Header là đầu nên nó luôn luôn được thực hiện đầu tiên sau đó nó không thể lấy dữ liệu từ những hành động trẻ khác. Tôi đã thử các bộ lọc (onActionExecuted; onActionResultExcuted và vv) nhưng không ai trong số họ hoạt động. Tôi thực sự cần thực hiện hành động tiêu đề sau khi tất cả các hành động con được hiển thị. Tôi không muốn tạo css ở cuối trang. Tôi có thể nhưng tôi không muốn sử dụng javascript để tiêm các tập tin js/css; hoặc viết một mô-đun http để "thủ công" thay đổi html đầu ra. Nó rất dễ dàng để xử lý nó trong webform. Tôi tin rằng có một cách để làm điều đó trong MVC quá. Chúng tôi rất trân trọng bất kỳ sự giúp đỡ nào!
Là một đơn giản 'OrderBy()' không thể? –
Cảm ơn bạn đã trả lời! nhưng không có sẵn sàng cho các hành động (hành động con) trong một trang. Không giống như biểu mẫu Web mà chúng tôi có thể tải kiểm soát người dùng bằng cách tìm ID kiểm soát, dao cạo MVC không cung cấp cách kiểm tra con của trang. – user985287