2012-02-10 39 views
5

Tôi rất mới đối với C# và .NET và tôi thấy mình phải đối mặt với một vấn đề và tôi không chắc chắn về hướng mà tôi cần phải đứng đầu.Hiển thị trang động trong ASPX

Công ty của tôi làm việc với hệ thống thực hiện đăng ký của bên thứ ba cho nhiều chức năng, bao gồm lập hóa đơn và gia hạn. Hệ thống này có khả năng tự động gửi email khi các sự kiện nhất định được kích hoạt. Ví dụ, mỗi đăng ký đi qua, những gì chúng tôi gọi, một loạt đổi mới. Loạt bài này bao gồm một số nỗ lực lan truyền trong suốt thời gian đăng ký.

Khi đăng ký đủ điều kiện cho một nỗ lực nhất định của loạt bài này, chúng tôi có thể tạo sự kiện sẽ khiến hệ thống gửi yêu cầu HTTP POST tới URI đã cho bằng tải trọng XML. Điểm cuối (trang .aspx) nhận được yêu cầu, xử lý nó và trả về một phản hồi với, trong trường hợp này là mã HTML. HTML đó sau đó được gửi qua email bởi hệ thống thực hiện.

Tôi có một ứng dụng web cơ bản được tạo bằng một vài trong số các trang .aspx này và đang chạy. Mỗi trang có mã .cs tương ứng phía sau tệp.

Đây là nơi câu hỏi của tôi thực sự bắt đầu. Trong hệ thống thực hiện của chúng tôi, chúng tôi chỉ có thể xác định một điểm cuối cho mỗi kết hợp của sự kiện và sản phẩm. Vì vậy, bất kể nỗ lực đăng ký nào đủ điều kiện vào thời điểm đó, bản thân sự kiện cũng giống nhau. Tuy nhiên, khác nhau là XML của yêu cầu HTTP POST. Trong XML mà tôi có thể biết được nỗ lực nào đã được tạo ra. Lý do quan trọng là vì HTML của email tương ứng là khác nhau cho mỗi nỗ lực. Để cụm từ nó một cách hơi khác nhau, HTML nên được kết xuất là khác nhau, từ trên xuống dưới, cho nỗ lực 1 hơn nỗ lực 2. Nỗ lực 2 khác với nỗ lực 3, v.v.

Vì vậy, những gì tôi đang cố gắng tìm ra là cách "hướng lưu lượng truy cập". Vì tất cả các yêu cầu này sẽ đến một điểm cuối duy nhất, tôi cần phải tự động trả lại HTML chính xác cho nỗ lực tương ứng.

Trong trang .aspx khác trong cùng một ứng dụng này, có một số nội dung cần được tạo động tùy thuộc vào nội dung của yêu cầu. Trong trường hợp đó, tôi đã sử dụng hai điều khiển PlaceHolder, một cho mỗi bộ văn bản có thể có. Sau đó, trong mã phía sau, hãy đặt thuộc tính Visible thành true hoặc false nếu cần.

Tôi đã loại bỏ ý tưởng làm điều đó trong trường hợp này sớm vì có năm hoặc sáu mẫu HTML và nhồi tất cả chúng vào một trang sẽ lộn xộn và khó duy trì.

Đây là điểm tôi không biết phải làm gì tiếp theo. Tôi có cảm giác rằng Kiểm soát người dùng hoặc Kiểm soát tùy chỉnh sẽ là cách để đi? Tuy nhiên, chuyển hướng cũ là một lựa chọn tốt hơn? Hoặc không có ở trên?

Trả lời

4

Giải pháp bạn loại bỏ rất gần với giải pháp đúng. Tuy nhiên, có một cái gì đó bạn có thể làm để đơn giản hóa nó và làm cho bảo trì dễ dàng hơn.

Điều chúng tôi muốn làm ở đây là tạo điều khiển tùy chỉnh hoặc kiểm soát người dùng cho từng nỗ lực. Điều này sẽ cho phép bạn duy trì mã cho những nỗ lực một cách riêng biệt, mà không trộn lẫn mọi thứ với nhau ở một nơi. Sau đó, toàn bộ trang điểm * .aspx của bạn bao gồm một điều khiển giữ chỗ duy nhất. Khi xử lý yêu cầu, phương thức Page_Load của bạn sẽ phân tích cú pháp xml của bạn và tìm ra loại nỗ lực nào bạn cần. Sau đó, nó sẽ tạo một thể hiện mới của điều khiển thích hợp, thêm nó vào trình giữ chỗ và chuyển phần còn lại của dữ liệu vào điều khiển để kết thúc xử lý.

Vì có một số điểm chung trong tất cả các điều khiển ở đây (khả năng nhận tin nhắn xml), trước tiên bạn cũng có thể tạo một điều khiển cơ sở cho các điều khiển nỗ lực riêng để kế thừa.

+0

ok ... tôi ở bên bạn. Có vẻ như không nhìn thấy khu rừng cho những cái cây trên cái này! Khi tôi cố gắng tạo kết nối giữa những gì tôi đã làm ở trang kia và trang này, tôi đã bị mắc kẹt trong các lựa chọn duy nhất của tôi cho điều khiển PlaceHolder là hiển thị hoặc không hiển thị. Cảm ơn! –

3

Từ những gì tôi hiểu, bạn muốn có một điểm cuối duy nhất nhưng vẫn có thể "định tuyến" các yêu cầu nội bộ. Điều này là dễ dàng có thể.

Bạn có thể chuyển yêu cầu ví dụ nội bộ bằng cách sử dụng Server.Transfer. Bằng cách này, bạn có thể có 5 hoặc 6 mẫu HTML khác nhau và sau đó định tuyến các yêu cầu đến một mẫu chính xác tùy thuộc vào nội dung của yêu cầu.

+0

oh, ok. Điều đó cũng có ý nghĩa. Cảm ơn! –

0

enter link description here

Dưới đây chúng tôi đưa ra ví dụ ở đây để tạo ra một trang .aspx mới tại thời gian chạy. Chúng tôi cũng cung cấp tùy chọn để đặt tên trang. Người dùng có thể cho anh ta/cô ấy thích. Giống như việc viết blog của Google, chúng tôi tạo trang mới tại thời gian chạy. Trang mới không có trong trang web, trang này cần phải được tạo khi chạy và cần phải năng động.

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