2008-10-22 20 views
9

Có thể sử dụng công cụ tạo khuôn mẫu asp (Với lớp mã sau một phần, khối động <% ...%> và như vậy) để tạo HTML không? Tôi muốn có một cách sạch sẽ và duy trì để tạo mã động. (Cụ thể, tôi muốn tạo mã LaTeX được điền bằng các giá trị từ cơ sở dữ liệu.)Sử dụng công cụ tạo hình aspx để tạo Non-HTML

Hiện tại mẫu LaTeX của tôi là chuỗi tài nguyên với trình giữ chỗ mà tôi string.replace với các giá trị cơ sở dữ liệu. Giải pháp này nhanh chóng trở nên rất khó khăn để duy trì và làm sạch. Tôi thực sự muốn sử dụng các khối động từ đánh dấu aspx, nhưng tôi không chắc chắn a) cho dù aspx sẽ ném một phù hợp khi đầu ra không phải là HTML, hoặc b) làm thế nào để thực sự làm cho kết quả thành một tập tin .tex .

Mã tạo mã nằm trong C# .dll. Chúng tôi đang sử dụng .NET 3.5

Điều này có khả thi không? Cảm ơn trước.

Trả lời

7

Templating T4 đi kèm với Visual Studio 2008 nguyên bản hoặc với Visual Studio 2005 SDK, bạn có thể tạo ra khá nhiều thứ bạn muốn.

Bạn có thể có thông tin thêm về các liên kết sau đây:

Tôi khá chắc chắn rằng tất cả các liên kết đó là một khởi đầu tốt cho y nhiệm vụ của chúng tôi.

Nếu bạn muốn tạo ra các mẫu T4 bên ngoài của Visual Studio, có tùy chỉnh MSBuild nhiệm vụ để gọi một mẫu T4 (link)

Đây là một mẫu của "Execute" quy tắc ứng nhiệm vụ MSBuild. Click here for the source code:

public override bool Execute() 
{ 
    bool success = false; 

    //read in the template: 
    string template = File.ReadAllText(this.TemplatePath); 

    //replace tags with property and item group values: 
    ProjectHelper helper = new ProjectHelper(this); 
    template = helper.ResolveProjectItems(template); 

    //copy the template to a temp file: 
    this._tempFilePath = Path.GetTempFileName(); 
    File.WriteAllText(this._tempFilePath, template); 

    //shell out to the exe: 
    ProcessHelper.Run(this, TextTransform.ToolPath, TextTransform.ExeName, string.Format(TextTransform.ArgumentFormat, this.OutputPath, this._tempFilePath)); 
    success = true; 

    return success; 
} 
+0

Từ sự hiểu biết của tôi T4 là dành cho thiết kế thời gian thế hệ. Tôi cần phải tạo ra latex khi chạy, sortof như một asp. Nếu T4 có thể được gọi khi chạy, nó trông giống như công cụ thích hợp, nhưng tôi không chắc chắn nó có thể. – Wyatt

+0

Chỉ cần chỉnh sửa và tìm thấy bạn một liên kết để tạo ra nó từ MSBuild thay vì Visual Studio. –

+0

Brilliant! Cảm ơn. – Wyatt

0

Tôi không hiểu tại sao không. Một người nào đó tôi biết tại một công việc trước đây đã tạo ra một trình tạo trình bao bọc cơ sở dữ liệu bằng cách sử dụng các trang ASP.NET và điều khiển lặp lại để chèn các thuộc tính. Sau đó ông đã viết ra các nội dung tài liệu vào một tập tin nguồn.

Nếu bạn đang lo lắng về ASP.NET sẽ ném phù hợp, bạn chỉ có thể tạo ra một trường hợp thử nghiệm rất hạn chế và xem cho chính mình. Không nên mất nhiều thời gian để kiểm tra một lý thuyết và cho bạn biết nếu nó đáp ứng nhu cầu của bạn.

0

Chắc chắn là có thể. Hầu hết các điều khiển máy chủ sẽ bị xóa, vì chúng sẽ tự động phát ra đánh dấu HTML. Tuy nhiên, bạn có thể databind trang và sử dụng biểu thức databinding. Visual Studio sẽ không nghi ngờ gì về việc đánh dấu không hợp lệ.

Sau đó, bạn phải chạy các trang của mình thông qua Cassini hoặc đường dẫn ASP.NET để có được kết quả đầu ra. Tôi đã có một thử nghiệm đơn vị khai thác ở đâu đó mà làm điều đó, và nó đáng ngạc nhiên dễ dàng.

A tốt hơn ý tưởng, mặc dù, có thể sẽ sử dụng trình tạo mã. Một cái gì đó như CodeSmith sẽ làm việc độc đáo, hoặc thậm chí Visual Studio được xây dựng trong T4 mang lại cho bạn rất nhiều tính linh hoạt trong khi không cố gắng buộc bạn vào HTML.

+0

Nhưng các mẫu T4 có thể được hiển thị khi chạy không? – Wyatt

0

Có bạn có thể. Chỉ cần tạo trang .aspx chuẩn, xóa tất cả HTML và đặt bất kỳ nội dung nào bạn muốn trong trang. Sau đó, bạn có thể sử dụng các thẻ <%%> để đặt nội dung động trong trang. Và như Jason Z đã nói, bạn có thể sử dụng điều khiển Lặp lại để lặp qua bộ sưu tập các mục để liệt kê trong "trang". Ngoài ra, bạn sẽ không thể sử dụng tất cả các điều khiển máy chủ khác vì chúng tạo HTML, nhưng bạn vẫn có thể tạo điều khiển máy chủ của riêng bạn và/hoặc điều khiển người dùng khi cần thiết.

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