5

現在、ASP.NET Core カスタム タグ ヘルパーに取り組んでいます。次のように、属性から複雑なオブジェクトを読み取る必要があります。

【機種】

public class Page {
  [HtmlAttributeName(page-size)]
  public int size {get; set;}
}

public class MyControl {
  public Page page {get; set;}
}

【タグヘルパークラス】

[TargetElement("MyControl", Attributes="page-size")]
public class MyControlTagHelper : TagHelper {
  public Page page {get; set;}
  //Here i have process methods.
}

そして今、次のようにビューでページサイズの値を取得したいと思います:

<MyControl page-size="4"></MyControl>

私はこれを行うことを知りません。ここまでは、この記事 に示されているように、完全な複合オブジェクトを属性に提供しようとしました。

複合オブジェクトの値を として読み取るにはどうすればよいpage-sizeですか?

4

2 に答える 2

7

Page クラスから HtmlAttributeName を削除します

public class Page {
  public int size{ get;set; }
 }

MyControl クラスは必要ありません

タグヘルパーの PageProperty に HtmlAttributeName を配置します

[TargetElement("MyControl", Attributes="page-info")]
public class MyControlTagHelper : TagHelper {

  [HtmlAttributeName("page-info")]
  public Page page{ get;set; }
 //Here i have process methods.
 }

ビューにカスタムタグのマークアップを配置し、ビューモデルから Page オブジェクトを渡します

<MyControl page-info="@Model.Page"></MyControl>

これで、page-info 属性で Page オブジェクトを直接渡し、プロセス メソッドからそのメンバーに直接アクセスできるようになりました。process メソッド内で null をテストし、null の場合は output.SuppressOutput(); を設定するだけです。戻る;

于 2015-07-06T21:00:51.210 に答える