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 类

将 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(); 返回;

于 2015-07-06T21:00:51.210 回答
3

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

[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>

供进一步参考:

于 2015-07-08T09:49:05.243 回答