使用 T4 模板通过 javascript 服务器 html 页面

问题描述 投票:0回答:0

我是 T4 模板的新手,我在想如何通过 T4 创建和提供生成的 html 页面。

我在test1.tt文件中有这部分代码

<#@ template language="C#" #>
<#@ assembly name="System.Core" #>
<#@ import namespace="System.Linq" #>
<#@ import namespace="System.Text" #>
<#@ import namespace="System.Collections.Generic" #>
<div id='test'></div>
<script type='text/javascript'>
    function insertText () {
        document.getElementById('test').innerHTML = 'Some text here';
    }
</script>

我有生成它的 c# 代码

    [HttpGet]
    public string Generate([FromBody]dynamic value)
    {
        try
        {         
            string webResponseText = new test1().TransformText();
            return webResponseText;
        }
        catch(Exception ex)
        {
            throw ex;
        }
    }

我想做的一个类似的逻辑例子是 “你为一个朋友创建了一个包含所有文件的程序,但是如果你想让你的朋友运行这个程序,你会把你文件中编译后的文件交给他,你不会告诉他拿走所有文件,编译它们然后下次运行.exe"

类似的东西,但现在我的朋友是浏览器。

那么,是否可以运行这个 .tt 文件,运行其中的所有 javascript 代码并获取生成的输出?

我有一个 Asp.Net 核心项目,因为 T4 在核心中没有得到完全支持,我有这个调用其他 web api 的操作,使所有“工作”

[Produces("text/html")]
[HttpGet]
public async Task<String> T4test()
{
    using (var client = new HttpClient())
    {
        try
        {
            client.BaseAddress = new Uri(WebAPI);
            var response = await client.GetAsync("Generate");
            response.EnsureSuccessStatusCode();

            string res = await response.Content.ReadAsStringAsync();
            res = res.Trim('"');
            return res;
        }
        catch (Exception ex)
        {
            throw ex;
        }
    }
}

我运行

localhost:12895/Entities/T4test
此操作调用运行 .tt 文件的其他函数“生成”。我得到的结果是一个空的 html 页面,使用 f12 我可以看到 javascript 代码存在但从未调用过,不要更改元素的文本。

所以,我的问题很简单,可以使用 T4 创建一个运行 javascript 文件的 html 页面并将其返回到我的核心操作吗?这个类型是字符串?是否可以创建一个编译文件并准备好浏览器?

asp.net-core t4 compiled
© www.soinside.com 2019 - 2024. All rights reserved.