自定义标记助手:如何在属性中使用复杂对象
本文关键字:属性 对象 复杂 自定义 | 更新日期: 2023-09-27 18:01:09
我目前正在开发一个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
?
从页面类中删除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>
现在,您直接在pageinfo属性上传递Page对象,并且可以直接从process方法访问其成员。在处理方法中测试它是否为null,如果为null,则设置输出。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>
供进一步参考:
WebsiteInformationTagHelper.cs
源代码About.cshtml
源代码