我们可以得到一个ModelExpression
在 TagHelper 中使用此属性:
[HtmlAttributeName("asp-for")]
public ModelExpression For { get; set; }
我以某种方式设法*拥有一个具有 ModelExpression
的 ViewModel属性:
public class TemplateViewModel
{
public ModelExpression For { get; set; }
}
每次我尝试传递它时,模型表达式都是 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/