ASP.NET 核心 TagHelpers 中的表达式

Expression in ASP.NET Core TagHelpers

在 TagHelpers 中,我们通常有一个名为 asp-for 的 属性,用于将 TagHelper 连接到模型 属性。

我创建了一个自定义 TagHelper,并添加了一个 属性 就像 asp-for:

    [HtmlTargetElement("myinput", TagStructure = TagStructure.WithoutEndTag)]
    public class MyInputTagHelper : TagHelper {
        public ModelExpression Field { get; set; }
    }

通常,如果绑定模型是一个带有子类的复杂类型,并且我需要那个 属性 的完整路径,我可以通过评估 System.Linq.Expressions.Expression 来获得完整的访问路径。如何使用 ModelExpression 实现此目的?

我有一个模型:

public class PersonVM
{
    public Person Person { get; set; }
}

在 .cshtml 中:

@model PersonVM

<myinput field="Person.PersonAddress.City"/>

在 TagHelper MyInputTagHelper 中,我需要完整的请求路径。在此示例中,它将是 "Person.PersonAddress.City"。我所能得到的只是 "City" 通过 Field.Metadata.PropertyName.

好的我知道了,原表情保存在

ModelExpression.Name