2009-02-20 33 views
5

Chúng tôi có một loạt các mẫu NVelocity trong tài nguyên nhúng mà chúng tôi sử dụng cho email. Chúng tôi muốn di chuyển các mẫu này sang DB để chúng có thể được người dùng định cấu hình dễ dàng.NVelocity không còn hỗ trợ các mẫu chuỗi không?

Dường như NVelocity (Cổng lâu đài) không hỗ trợ chuỗi dưới dạng mẫu. Có ai biết làm thế nào để làm điều đó.

Để được rõ ràng đây là những gì tôi muốn làm (cú pháp có thể không chính xác, tôi sẽ do bộ nhớ) ...

string templateString = "Hello $!user"; 
Template template = new Template(templateString); 
string results = template.Merge(....); 

Trả lời

15

này làm việc cho tôi:

using System.Collections; 
using System.IO; 
using NUnit.Framework; 
using NVelocity; 
using NVelocity.App; 

[Test] 
public void StringParsing() 
{ 
    var h = new Hashtable { 
     { "foo", "Template" }, 
     { "bar", "is working" }, 
     { "foobar", new[] { "1", "2", "3" } } }; 
    Velocity.Init(); 
    var c = new VelocityContext(h); 
    var s = new StringWriter(); 
    Velocity.Evaluate(c, s, "", 
     "$foo $bar: #foreach ($i in $foobar)$i#end"); 
    Assert.AreEqual("Template is working: 123", s.ToString()); 
} 
+0

Việc thiếu tài liệu tốt cho NVelocity là buồn bởi vì đó là một thư viện mạnh mẽ và hữu ích như vậy. Tôi mất quá nhiều thời gian để tìm câu trả lời của bạn nên tôi đã đánh dấu câu hỏi là câu hỏi yêu thích để tham khảo trong tương lai và bình chọn câu trả lời của bạn và câu hỏi. –

+0

Cảm ơn bạn. Tuy nhiên, tôi nghĩ rằng đó là một ý tưởng tốt để xem xét các công cụ mẫu khác, vì NVelocity gần như bị bỏ rơi, khá chậm và một chút quá hạn chế. – Bergius

0

Sau nhiều nghiên cứu trên của riêng tôi cảng Lâu đài NVelocity có vẻ như nó sẽ là một PITA lớn để có được các mẫu từ một chuỗi bộ nhớ.

Tôi đã từ bỏ trên NVelocity và bắt đầu sử dụng StringTemplate. Đặc biệt là thực hiện điều này: http://websitelogic.net/articles/MVC/stringtemplate-viewengine-asp-net-mvc/

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