自定义taghelper - 如何在属性中使用复杂对象?

Mad*_*dhu 5 c# asp.net-core-mvc tag-helpers asp.net-core

我目前正在努力,ASP.Net 5 custom taghelper并达成了以下要求.1.需要从属性中读取复杂对象,如下所示.

[楷模]

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

public class MyControl {

  public Page page{ get;set; }
}
Run Code Online (Sandbox Code Playgroud)

[TagHelper类]

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

  public Page page{ get;set; }
 //Here i have process methods.
}
Run Code Online (Sandbox Code Playgroud)

现在我想在视图中获取页面大小值,如下所示.

但我不知道如上所述.到目前为止,我尝试过能够为属性提供完整的复杂对象,如下面的链接所示

http://www.mikesdotnetting.com/Article/275/custom-taghelpers-in-asp-net-mvc-6

那么我怎样才能读出复杂的属性值page-size呢?

Joe*_*tte 6

从Page类中删除HtmlAttributeName

public class Page {
  public int size{ get;set; }
 }
Run Code Online (Sandbox Code Playgroud)

你不需要MyControl类

将HtmlAttributeName放在taghelper的PageProperty上

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

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

在您的视图中,为您的自定义标记添加标记,并从您的viewmodel传入Page对象

<MyControl page-info="@Model.Page"></MyControl>
Run Code Online (Sandbox Code Playgroud)

现在,您直接在page-info属性上传递Page对象,并且可以直接从process方法访问其成员.在process方法中测试它为null,如果为null则只设置output.SuppressOutput(); 返回;