Asp.Net 5 TagHelper 模型状态绑定
Asp.Net 5 TagHelper Modelstate binding
我正在尝试制作一个绑定到当前 ModelState 的自定义 TagHelper,很像
<input asp-for="this_part" />
我想通过我的自定义 TagHelper 进行一些 ModelState 验证-class。
试图搜索 Github 存储库,但无法查明此确切行为。有没有人找到办法做到这一点?
谢谢!
我不确定你在找什么,但是 DefaultHtmlGenerator does something similar for validation messages。
您可以通过 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; }
我正在尝试制作一个绑定到当前 ModelState 的自定义 TagHelper,很像
<input asp-for="this_part" />
我想通过我的自定义 TagHelper 进行一些 ModelState 验证-class。
试图搜索 Github 存储库,但无法查明此确切行为。有没有人找到办法做到这一点?
谢谢!
我不确定你在找什么,但是 DefaultHtmlGenerator does something similar for validation messages。
您可以通过 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; }