2017-10-19 128 views
3

我已经添加了以下标记辅助处理:标签助手没有在ASP.NET的Core 2

using System; 
using System.Linq; 
using Microsoft.AspNetCore.Mvc.ModelBinding; 
using Microsoft.AspNetCore.Mvc.Rendering; 
using Microsoft.AspNetCore.Mvc.TagHelpers; 
using Microsoft.AspNetCore.Mvc.ViewFeatures; 
using Microsoft.AspNetCore.Razor.TagHelpers; 

namespace X.TagHelpers 
{ 
    [HtmlTargetElement(Attributes = ValidationForAttributeName + "," + ValidationErrorClassName)] 
    public class ValidationClassTagHelper : TagHelper 
    { 
     private const string ValidationForAttributeName = "k-validation-for"; 
     private const string ValidationErrorClassName = "k-error-class"; 

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

     [HtmlAttributeName(ValidationErrorClassName)] 
     public string ValidationErrorClass { get; set; } 

     [HtmlAttributeNotBound] 
     [ViewContext] 
     public ViewContext ViewContext { get; set; } 

     public override void Process(TagHelperContext context, TagHelperOutput output) 
     { 
      Console.WriteLine("\n\n------------!!!!!!---------\n\n"); 
      ModelStateEntry entry; 
      ViewContext.ViewData.ModelState.TryGetValue(For.Name, out entry); 
      if (entry == null || !entry.Errors.Any()) return; 
      var tagBuilder = new TagBuilder(context.TagName); 
      tagBuilder.AddCssClass(ValidationErrorClass); 
      output.MergeAttributes(tagBuilder); 
     } 
    } 
} 

,然后在_ViewImports.cshtml我已经添加了一行:

@addTagHelper *, X.TagHelpers 

文件编译正确,如果我引入语法错误dotnet build警告我。

然后在我的网页之一,我补充一下:

<div k-validation-for="OldPassword" k-error-class="has-danger"></div> 

如果我打开我看到在服务器端没有控制台输出和k-validation-fork-error-class被转发到因为是生成的页面的页面(相将has-danger类添加到class属性)。

我在做什么错?

+0

Visual Studio或应用程序控制台哪一个? – levent

+0

我在Mac OS X上通过'dotnet'控制台/终端应用程序。调用'dotnet build' /'dotnet run'。 – Shoe

回答

1

注册标签助手时,需要的是程序集,而不是名称空间 - 在docs中进行了解释。

...第二个参数“Microsoft.AspNetCore.Mvc.TagHelpers”指定包含标签助手的程序集。 Microsoft.AspNetCore.Mvc.TagHelpers是内置ASP.NET Core Tag Helpers的程序集。

所以你的情况,你可以改变这一点:

@addTagHelper *, X.TagHelpers 

要这样:

@addTagHelper *, X