C# @HTML扩展
我会保持简单 我有以下型号:C# @HTML扩展,c#,asp.net-mvc-3,C#,Asp.net Mvc 3,我会保持简单 我有以下型号: public class Person { public int Id { get; set; } public string FullName { get; set; } } 我在..\Shared\DisplayTemplates\Person.cshtml中为此模型创建了此部分视图 @model BillSplitter.Classes.Person <b>@Model.FullName</b> 以下是我想要创建的扩
public class Person
{
public int Id { get; set; }
public string FullName { get; set; }
}
我在..\Shared\DisplayTemplates\Person.cshtml中为此模型创建了此部分视图
@model BillSplitter.Classes.Person
<b>@Model.FullName</b>
以下是我想要创建的扩展:
public static IHtmlString DisplayPersons(this HtmlHelper helper, IEnumerable<Person> model)
{
string htmlString = "";
foreach (Person p in model)
string += helper.DisplayFor(p); //PROBLEM!
return new HtmlString(htmlString);
}
publicstaticIHTMLStringdisplayPersons(此HtmlHelper助手,IEnumerable模型)
{
字符串htmlString=“”;
foreach(模型中的人员p)
string+=helper.DisplayFor(p);//问题!
返回新的HtmlString(HtmlString);
}
问题是helper没有公开函数的显示
如何在此扩展中从我的局部视图中获取
HtmlString
?如果将Person
的集合传递给@Html.DisplayFor
,它将自动迭代并使用正确的模板显示每个Person
:
@Html.DisplayFor(model => model.PersonList)
假设
PersonList
是一个IEnumerable
,则每个Person
将根据您的DisplayTemplate
显示,这是您试图通过自定义HtmlHelper扩展实现的。如果您将Person
的集合传递给@Html.DisplayFor
,它将自动迭代并使用正确的模板显示每个人
:
@Html.DisplayFor(model => model.PersonList)
假设
PersonList
是一个IEnumerable
,每个Person
将根据您的DisplayTemplate
显示,这是您试图通过自定义HtmlHelper扩展实现的。使用System.Web.Mvc.Html
,尽管您不必这样做——MVC将知道如何处理IEnumerable
;-)<代码>使用System.Web.Mvc.Html,尽管您不必这样做——Mvc将知道如何处理IEnumerable
;-)