当前位置: 代码迷 >> VB Dotnet >> 大侠:vb.net操作NVelocity模板的有关问题
  详细解决方案

大侠:vb.net操作NVelocity模板的有关问题

热度:111   发布时间:2016-04-25 02:06:13.0
求助大侠:vb.net操作NVelocity模板的问题
我没找到vb.net的资料就用C#的翻译成了下面vb.net代码,我是想把一个类的实例作为参数传给模板,但模板并未收到son的数据,请各位前辈帮忙看看,字符串类型和数值类型都以传递,唯独类的实例不可以传递,代码如下:
person类代码:
Public Class person
    Public name As String
    Public age As Integer
End Class

html模板代码:
<html>
<head>
    <title>无标题页</title>
</head>
<body>
$p.name
</body>
</html>

服器端ashx代码:
    context.Response.ContentType = "text/html"
        Dim son As New person
        son.name = "yxk"
        son.age = 123

        '创建模板类
        Dim vltengine As VelocityEngine
        vltengine = New VelocityEngine()
        vltengine.SetProperty(RuntimeConstants.RESOURCE_LOADER, "file")
        vltengine.SetProperty(RuntimeConstants.FILE_RESOURCE_LOADER_PATH, System.Web.Hosting.HostingEnvironment.MapPath("~/模板")) '模板文件所在的文件夹
        vltengine.Init()

        '设置参数
        Dim vltcontext As VelocityContext
        vltcontext = New VelocityContext() 
        vltcontext.Put("p", son) '设置参数,在模板中可以通过$data来引用

        Dim vlttemplate As Template
        vlttemplate = vltengine.GetTemplate("htmlmb2.htm")
        Dim vltwriter As System.IO.StringWriter
        vltwriter = New System.IO.StringWriter()
        vlttemplate.Merge(vltcontext, vltwriter)

        Dim html As String
        html = vltwriter.GetStringBuilder().ToString()
        context.Response.Write(html)
------解决思路----------------------
Public Class Person
    Dim _name As String
    Public Property Name() As String
        Get
            Return _name
        End Get
        Set(ByVal value As String)
            _name = value
        End Set
    End Property


    Public age As Integer
End Class


必须属性