【问题标题】:Is it possible to pass ModelExpression to a TagHelper?是否可以将 ModelExpression 传递给 TagHelper?
【发布时间】:2018-04-17 21:52:29
【问题描述】:

我们可以在 TagHelper 中使用该属性获得ModelExpression

[HtmlAttributeName("asp-for")]
public ModelExpression For { get; set; }

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

public class TemplateViewModel
{
    public ModelExpression For { get; set; }
}

每次我尝试传递它时,模型表达式都是来自TemplateViewModelFor,而不是存储在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 描述的,而不是ModelExpressionModelExpression

*因为我想使用IHtmlHelper::PartialView() 为 TagHelper 提供模板视图。这个例子是重最小化的。我的主要动机是创建一个&lt;form-group for="" /&gt; TagHelper,它正在生成一个Bootstrap Form Group

【问题讨论】:

    标签: c# razor asp.net-core asp.net-core-tag-helpers


    【解决方案1】:

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

    【讨论】:

      猜你喜欢
      • 2019-04-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-11-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多