繁体   English   中英

自定义标签助手:如何在属性中使用复杂对象?

[英]Custom tag helper: How do I use complex objects in attributes?

我目前正在研究 ASP.NET Core 自定义标记助手。 我需要从属性中读取一个复杂的对象,如下所示:

[楷模]

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

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

[TagHelper 类]

[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

从 Page 类中删除 HtmlAttributeName

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

你不需要 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.
 }

在您的视图中放置自定义标签的标记并从您的视图模型中传入 Page 对象

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

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

您的标签助手类应如下所示:

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

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

}

您的查看页面如下:

<MyControl page-info="new Page{size = 2}"></MyControl>

进一步参考:

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM