2009-07-24 34 views
5

Tôi đang tạo một giải pháp ASP.NET MVC, và bên trong tôi có 2 dự án MVC Website.Làm cách nào tôi có thể tham chiếu chế độ xem Chính trong một dự án khác trong ASP.NET MVC?

Tôi quan tâm đến việc tạo dự án thứ 3 có tên "Được chia sẻ", nơi tôi có thể tham chiếu lượt xem/nội dung được chia sẻ giữa hai trang web để tôi chỉ có một nơi để chỉnh sửa chúng.

  • WebUI.Site1 (MVC trang web ASP.NET)
  • WebUI.Site2 (ASP.NET MVC Site)
  • WebUI.Shared (mới tạo ASP.NET MVC Site)

Làm thế nào tôi có thể tham khảo vị trí của một Masterview nếu nó nằm trong một dự án khác?

Vì vậy, thông thường ở phía trên cùng của một cái nhìn tôi sẽ tham khảo một Masterview như vậy:

<%@ Page Title="" Language="C#" MasterPageFile="~/Views/Shared/Tabbed.Master" Inherits="System.Web.Mvc.ViewPage<WebUI.ViewModels.Admin.EditProfileViewModel>" %> 

Tuy nhiên,

Bây giờ, rằng "Tabbed.Master" không nằm trong dự án của địa phương, nó nằm trong một dự án khác biệt trong giải pháp. Tôi đã tạo một tham chiếu đến dự án nhưng tôi không biết làm thế nào để tham khảo Tabbed.Master từ WebUI.Site1 đến WebUI.Shared?

Cái gì như:

<%@ Page Title="" Language="C#" MasterPageFile="WebUI.Shared.Views.Tabbed.Master" Inherits="System.Web.Mvc.ViewPage<WebUI.ViewModels.Admin.EditProfileViewModel>" %> 

Không làm việc.

Làm cách nào tôi có thể tham khảo vị trí của những thứ như chế độ xem trước, tệp css, hình ảnh trên các dự án như vậy?

Trả lời

0

Giả sử rằng masterpage sống tại WebUI.Shared Root/Views/SharedPage.Master

Hãy thử tạo một thư mục ảo dưới cả WebUI.Site1WebUI.Site2 trỏ đến WebUI.Shared:

WebUI.Site1/Shared => WebUI.Shared Root 
WebUI.Site2/Shared => WebUI.Shared Root 

Từ bên trong WebUI.Site1WebUI.Site2 sử dụng đường dẫn sau đây để truy cập vào masterpage: ~/Shared/Views/SharedPage.Master

Tôi không nghĩ rằng IDE sẽ có thể theo dõi tham chiếu, nhưng nó sho uld làm việc trên máy chủ.

EDIT: WebUI.Site1 và WebUI.Site2 có thể cần tham chiếu trên WebUI.Shared.

+0

Điều này sẽ không hoạt động. Bạn không thể chỉ đơn giản trỏ đến một aspx/ascx hoặc SiteMaster trong một đường dẫn ảo khác và nó trở thành một phần của cơ sở mã của bạn. –

+0

@Nissan Fan - Vâng, bạn có thể. Tôi chỉ cần thiết lập một dự án thử nghiệm để xác minh xác nhận của tôi. IIS không quan tâm nếu một masterpage đã cho nằm trong cùng một dự án web như là root web. Miễn là các tài liệu tham khảo và đường dẫn có thể tìm thấy từ gốc trang web, IIS là hạnh phúc. Điều này giả định bạn đang sử dụng IIS để thiết lập các trang web - kỹ thuật này sẽ không chơi tốt đẹp với Visual Studio được xây dựng trong ASP.NET phát triển Server. – Brandon

0

Bạn cần tạo một tùy chỉnh ViewEngine nếu bạn muốn sử dụng một vị trí khác với thư mục Xem của dự án để lưu trữ chế độ xem của bạn.

Hãy xem điều này prototype bởi Phil Haack. Đó là về việc lưu trữ các khung nhìn trong cơ sở dữ liệu, nhưng nó sẽ cho bạn một ý tưởng về nơi bắt đầu.

1

Do tính chất của MasterViews, bạn cần phải tìm giải pháp được tạo mẫu. Con đường ảo là một cách để làm điều đó, nhưng tôi nghĩ rằng bạn sẽ gặp rắc rối tại một số điểm: Làm thế nào để bạn xử lý các tài liệu tham khảo tập tin khi bạn sử dụng máy chủ web Visual Studio nội bộ?

Và suy nghĩ về nỗi đau bạn gặp phải khi đường dẫn ảo này bị thiếu trong IIS.

Visual Studio cho phép bạn liên kết đến các tệp từ các dự án khác. Những file đó sẽ được sao chép qua tại thời gian biên dịch:

Kích chuột phải vào trong Solution Explorer -> Thêm mục hiện có ... -> chọn file -> Add Như liên kết

Cá nhân, tôi không' t chăm sóc cho tính năng này. Nhưng nó dường như làm những gì bạn cần.

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