我目前正致力于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; }
}
[TagHelper类]
[TargetElement("MyControl", Attributes="page-size")]
public class MyControlTagHelper : TagHelper {
public Page page{ get;set; }
//Here i have process methods.
}
现在我想在视图中获取页面大小值,如下所示。
但我不知道如上所述。到目前为止,我尝试过能够为属性提供完整的复杂对象,如下面的链接所示
http://www.mikesdotnetting.com/Article/275/custom-taghelpers-in-asp-net-mvc-6
那么我怎样才能将复杂的属性值读作page-size
?
答案 0 :(得分:6)
从Page class
中删除HtmlAttributeNamepublic 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.
}
在您的视图中为您的自定义标记添加标记,并从您的viewmodel传入Page对象
<MyControl page-info="@Model.Page"></MyControl>
现在您直接在page-info属性上传递Page对象,您可以直接从process方法访问其成员。在process方法中测试它为null,如果为null则只设置output.SuppressOutput();返回;
答案 1 :(得分:3)
TagHelper Class如下
[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>
如需进一步参考,请在下面找到链接