是否可以将ModelExpression传递给TagHelper?

Chr*_*rdt 6 c# razor asp.net-core asp.net-core-tag-helpers

我们可以ModelExpression在TagHelper中使用此属性:

[HtmlAttributeName("asp-for")]
public ModelExpression For { get; set; }
Run Code Online (Sandbox Code Playgroud)

我设法以某种方式拥有一个拥有ModelExpression属性的ViewModel :

public class TemplateViewModel
{
    public ModelExpression For { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

每次我尝试传递它时,Model表达式都是Forfrom TemplateViewModel,而不是真正的Expression wich存储到For

@model TemplateViewModel
<input asp-for="@Model.For" class="form-control"/>
Run Code Online (Sandbox Code Playgroud)

以上结果为:

<input class="form-control" type="text" id="For" name="For" value="Microsoft.AspNetCore.Mvc.ViewFeatures.ModelExpression" />
Run Code Online (Sandbox Code Playgroud)

我希望输入是用ModelExpression而不是文字a ModelExpression来描述的ModelExpression

*因为我想使用使用TagHelper的模板视图IHtmlHelper::PartialView()。此示例已大大减少。我的主要目的是创建单个<form-group for="" />TagHelper,该生成一个Bootstrap Form Group

Jer*_*man 3

ModelExpression在Razor Compiler中作为特殊情况处理,因此这不会直接起作用。由于编译器是开源的,您可以建议一个补丁来忽略属性本身是ModelExpression. 同时,您将需要在标签助手中使用不同类型的属性,以帮助您获取对实际ModelExpression. 也许public Func<ModelExpression> ForAccessor { get; set; }