2015-05-15 3 views
1

Я пытаюсь сделать пользовательский TagHelper, который связывается с текущим ModelState, так же, какAsp.Net 5 TagHelper ModelState связывание

<input asp-for="this_part" /> 

Я хотел бы сделать некоторые ModelState проверки из моего пользовательского TagHelper класса.

Пытался найти репозиторий Github, но не смог точно определить это поведение. Кто-нибудь нашел способ сделать это?

Спасибо!

ответ

3

Я не уверен, что именно вы ищете, но DefaultHtmlGenerator does something similar for validation messages.

Вы можете получить доступ к ModelState через ViewContext (Sample адаптированный ValidationMessageTagHelper.cs):

[TargetElement("span", Attributes = AttributeName)] 
public class YourTagHelper : TagHelper 
{ 
    private const string AttributeName = "your-for"; 

    [Activate] 
    protected internal ViewContext ViewContext { get; set; } 

    public override async Task ProcessAsync(TagHelperContext context, TagHelperOutput output) 
    { 
     var modelState = ViewContext.ViewData.ModelState; 
     // Your logic here 
    } 
} 

Из ваших комментариев, вы упомянули, что вы хотели IntelliSense для отображения на свойства модели. ValidationMessageTagHelper.cs делает это со следующим имуществом:

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

спасибо. Это почти то, что я хочу, так как это помогает с проверкой модели. Однако; это не приносит модель intellisense при вводе атрибута «for» элемента html. Я получаю значение атрибута «для», добавляя этот код: [HtmlAttributeName ("for")] public string AttributeFor {get; задавать; } , но не intellisense. Может быть, он должен быть другого типа, чем «строка»? – mikal

+0

Обновлен мой ответ для ответа на ваш последующий вопрос. Это то, что вы ищете? –

+0

Отлично! Спасибо Мэтт – mikal

Смежные вопросы