Asp.Net 5 TagHelper Modelstate binding

本文关键字:Modelstate binding TagHelper Net Asp | 更新日期: 2023-09-27 17:49:27

我正在尝试创建一个绑定到当前ModelState的自定义TagHelper,就像

<input asp-for="this_part" />

我想从我的自定义taghelper类做一些ModelState验证。

尝试搜索Github存储库,但无法精确定位此行为。有人找到办法了吗?

谢谢!

Asp.Net 5 TagHelper Modelstate binding

我不确定您到底在寻找什么,但是DefaultHtmlGenerator对验证消息做了类似的事情。

您可以通过ViewContext访问ModelState(示例改编自ValidationMessageTagHelper.cs):

[TargetElement("span", Attributes = AttributeName)]
public class YourTagHelper : TagHelper
{
    private const string AttributeName = "your-for";
    [ViewContext]
    [HtmlAttributeNotBound]
    protected internal ViewContext ViewContext { get; set; }
    public override async Task ProcessAsync(TagHelperContext context, TagHelperOutput output)
    {
        var modelState = ViewContext.ViewData.ModelState;
        // Your logic here
    }
}

从你的评论中,你提到你想要智能感知映射到一个模型属性。ValidationMessageTagHelper.cs通过以下属性来完成:

[HtmlAttributeName(ValidationForAttributeName)]
public ModelExpression For { get; set; }