我们可以在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。 最佳答案
ModelExpression
在Razor Compiler中作为特殊情况处理,因此这将无法直接起作用。由于编译器是开源的,因此您可以提出一个补丁,以忽略该属性本身是ModelExpression
的情况。同时,您将需要在标签帮助器中使用其他类型的属性,以帮助您获得对实际ModelExpression
的引用。也许public Func<ModelExpression> ForAccessor { get; set; }
?
关于c# - 是否可以将ModelExpression传递给TagHelper?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/47125008/