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

[HtmlAttributeName("asp-for")]
public ModelExpression For { get; set; }
我以某种方式设法*有一个具有ModelExpression属性的ViewModel:
public class TemplateViewModel
{
    public ModelExpression For { get; set; }
}
每次我尝试传递它时,Model表达式都是For中的TemplateViewModel,而不是存储在For中的实际表达式:
@model TemplateViewModel
<input asp-for="@Model.For" class="form-control"/>
以上结果为:
<input class="form-control" type="text" id="For" name="For" value="Microsoft.AspNetCore.Mvc.ViewFeatures.ModelExpression" />
我希望输入是由ModelExpression描述的,而不是ModelExpression的字面意义的ModelExpression
*因为我想使用IHtmlHelper::PartialView()获得TagHelper的模板 View 。此示例已被最小化。我的主要动机是创建一个<form-group for="" /> TagHelper,它会生成一个Bootstrap Form Group

最佳答案

ModelExpressionRazor Compiler中作为特殊情况处理,因此这将无法直接起作用。由于编译器是开源的,因此您可以提出一个补丁,以忽略该属性本身是ModelExpression的情况。同时,您将需要在标签帮助器中使用其他类型的属性,以帮助您获得对实际ModelExpression的引用。也许public Func<ModelExpression> ForAccessor { get; set; }

关于c# - 是否可以将ModelExpression传递给TagHelper?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/47125008/

10-09 08:18