![](/img/trans.png)
[英]How can I get the URL from route's name in c# using asp.net mvc and the razor template engine?
[英]How to get key list from razor engine template in c#?
我正在使用 .net 核心。
項目包含許多動態剃須刀引擎模板。 所有模板均由第三方用戶生成。 因此系統不能使用任何通用模型,也不能生成帶有值的填充剃須刀引擎模板的個體模型。
我需要獲取剃須刀引擎模板中使用的所有鍵的列表。
<acord>
<student>
<firstName>@Model.StudentFirstName</firstName>
<lastName>@Model.StudentLastName</lastName>
@if(@Model.StudentPhone != null)
{
<phone>@Model.StudentPhone</phone>
}
</student>
<parents>
<firstName>@Model.parentFirstName</firstName>
<lastName>@Model.parentLastName</lastName>
</parents>
</acord>
根據上面的示例,我需要鍵列表,例如,
@Model.StudentFirstName、@Model.StudentLastName、@Model.StudentPhone、@Model.parentFirstName @Model.parentLastName
我花了幾天時間在互聯網上找到解決方案,但沒有得到任何合適的解決方案。 那么如何從 razor 引擎模板中獲取密鑰列表呢?
你可以使用正則表達式。 根據您發布的示例,以下工作:
var input = @"<acord>
<student>
<firstName>@Model.StudentFirstName</firstName>
<lastName>@Model.StudentLastName</lastName>
@if(@Model.StudentPhone != null)
{
<phone>@Model.StudentPhone</phone>
}
</student>
<parents>
<firstName>@Model.parentFirstName</firstName>
<lastName>@Model.parentLastName</lastName>
</parents>
</acord>";
var pattern = @"@Model.([a-zA-Z_.]*)";
var keys = Regex.Matches(input, pattern)
.Cast<Match>()
.Select(m => m.Groups.Cast<Group>().LastOrDefault())
.Select(g => g.Value)
.Distinct()
.ToList();
foreach(var k in keys)
{
Console.WriteLine(k);
}
輸出:
StudentFirstName
StudentLastName
StudentPhone
parentFirstName
parentLastName
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.