2017-03-16 3 views
0

Visual Studio 2015でタグヘルパーのASP.Netコアプロジェクトが動作しません。プロジェクトにコンパイルエラーはありません。プロジェクトを実行すると、タグヘルパーはレンダリングされません。私はTagヘルパーの "Process"メソッドにブレークポイントを入れましたが、そこには来ていません。それを動作させる方法を教えてください。Asp.Netコア1.0(Visual Studio 2015)のタグヘルパーのヘルプが必要

1. "Microsoft.AspNet.Mvc.TagHelpers": "project.json"ファイルの "dependencies"セクションの "6.0.0-rc1-final"が含まれています。

2.Added @ addTagHelper *、_ViewImports.cshtmlファイルのMicrosoft.AspNetCore.Mvc.TagHelpers。

Index.cshtml

のコードの下に3.Added

<table generate-rows="@Model.Count()" source-model="@Model"></table> 

4.Tagヘルパーコード

using System.Collections; 
using System.Text; 
using System.Reflection; 
using Microsoft.AspNetCore.Razor.TagHelpers; 
using Microsoft.AspNetCore.Mvc.ViewFeatures; 

namespace MVC_TagHelper.CustomTagHelper 
{ 
    [HtmlTargetElement("table",Attributes ="generate-rows,source-model")] 
    public class TableTagHelper : TagHelper 
    { 
     [HtmlAttributeName("generate-rows")] 
     public int RepeatCount { get; set; } 
     [HtmlAttributeName("source-model")] 
     public ModelExpression DataModel { get; set; } 
     public override void Process(TagHelperContext context, TagHelperOutput output) 
     { 
      IEnumerable model = DataModel.Model as IEnumerable; 
      if (model == null) 
       return; 
      else 
      { 
       StringBuilder sb = new StringBuilder(); 
       foreach (var m in model) 
       { 
        PropertyInfo[] properties = m.GetType().GetProperties(); 
        string html = "<tr>"; 
        for (int i = 0; i < properties.Length; i++) 
        { 
         html += "<td>" + m.GetType().GetProperty(properties[i].Name).GetValue(m, null) + "</td>"; 
        } 
        html += "</tr>"; 
        sb.Append(html); 
       } 
       output.Content.SetHtmlContent(sb.ToString()); 
      } 
     } 
    } 
} 

答えて

0

チェック_ViewImports.cshtml。それはあなたのタグヘルパークラスの名前空間への参照が含まれていることを確認してください:私はしばらく前に同じ問題で苦労

@using MVC_TagHelper; 
@addTagHelper *, MVC_TagHelper 

+0

ありがとう、私はエラーが発生しています - TagHelperアセンブリ 'MVC_TagHelper'を解決できません。エラー:ファイルまたはアセンブリ 'MVC_TagHelper'またはその依存関係の1つを読み込めませんでした。システムは、指定されたファイルを見つけることができません。プロジェクト名とデフォルト名前空間はMVC_TagHelperです。コントローラの名前空間はMVC_TagHelper.Webです。タグヘルパーの名前空間はMVC_TagHelper.CustomTagHelperで、そのクラス名はTableTagHelperです。 _ViewImports.cshtmlファイル - MVC_TagHelperを使用するaddTagHelper *、Microsoft.AspNetCore.Mvc.TagHelpers addTagHelper *、MVC_TagHelper – user1396423

+0

@ user1396423これは、タグヘルパーを実装したアセンブリが 'MVC_TagHelper'と呼ばれていないためです。 (私は 'MVC_TagHelper.CustomTagHelper'から派生した名前を想定していたので、そのようにしました)。それを正しいアセンブリ名に変更してください。 – Humberto

+0

私は先生に挑戦しましたが、まだ動いていません。私は何が間違っているのか理解していない。 – user1396423

関連する問題