c# - 是否可以将 ModelExpression 传递给 TagHelper?

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

我们可以得到一个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 .

最佳答案

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

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

相关文章:

c# - 从 datagridview C# 中检索数字值

c# - 使用 wcf 服务发送带有 html body true 和图像的电子邮件

asp.net - asp.net 错误的替代错误消息

c# - 这可以创建 GTM.js 服务器端逻辑吗?

c# - unity assetbundle 加载 Assets 类型

c# - 有没有办法在使用 .net Framework 4.8 在 Visual Studio 2022 中处理 Razor View 时实时预览我的 Web 项目

google-chrome - 带有 Cookie 的 Asp.net 核心 Chrome 问题

c# - EF Core 5 - 如何将 EF.Functions.Like 与映射到 JSON 字符串的自定义属性一起使用?

c# - 在 NET.Core 上的 VS Code 中对一个非常简单的 WebApi 进行故障排除

asp.net-core - ASP.NET Core w/Tools for Docker EnvironmentName for Stage