diff --git a/src/AddIns/BackendBindings/AspNet.Mvc/Project/ItemTemplates/CSharp/CodeTemplates/AddView/AspxCSharp/List.cs b/src/AddIns/BackendBindings/AspNet.Mvc/Project/ItemTemplates/CSharp/CodeTemplates/AddView/AspxCSharp/List.cs
index 2a4bdcf993..05684c0be2 100644
--- a/src/AddIns/BackendBindings/AspNet.Mvc/Project/ItemTemplates/CSharp/CodeTemplates/AddView/AspxCSharp/List.cs
+++ b/src/AddIns/BackendBindings/AspNet.Mvc/Project/ItemTemplates/CSharp/CodeTemplates/AddView/AspxCSharp/List.cs
@@ -10,6 +10,8 @@
namespace ICSharpCode.AspNet.Mvc.AspxCSharp {
using ICSharpCode.AspNet.Mvc;
+ using System.Collections.Generic;
+ using System.Reflection;
using System;
@@ -18,12 +20,17 @@ namespace ICSharpCode.AspNet.Mvc.AspxCSharp {
private global::Microsoft.VisualStudio.TextTemplating.ITextTemplatingEngineHost hostValue;
- #line 58 "D:\projects\dotnet\SharpDevelop.AspNetMvc\src\AddIns\BackendBindings\AspNet.Mvc\Project\ItemTemplates\CSharp\CodeTemplates\AddView\AspxCSharp\List.tt"
+ #line 86 "D:\projects\dotnet\SharpDevelop.AspNetMvc\src\AddIns\BackendBindings\AspNet.Mvc\Project\ItemTemplates\CSharp\CodeTemplates\AddView\AspxCSharp\List.tt"
MvcTextTemplateHost MvcHost {
get { return (MvcTextTemplateHost)Host; }
}
+ public class ModelProperty
+ {
+ public string Name { get; set; }
+ }
+
public string GetViewPageType()
{
string viewDataTypeName = MvcHost.ViewDataTypeName;
@@ -32,6 +39,35 @@ namespace ICSharpCode.AspNet.Mvc.AspxCSharp {
}
return String.Empty;
}
+
+ List modelProperties;
+
+ List ModelProperties {
+ get {
+ if (modelProperties == null) {
+ modelProperties = new List(GetModelProperties());
+ }
+ return modelProperties;
+ }
+ }
+
+ bool ModelHasProperties {
+ get { return ModelProperties.Count > 0; }
+ }
+
+ public IEnumerable GetModelProperties()
+ {
+ var properties = new List();
+ foreach (PropertyInfo propertyInfo in MvcHost.GetViewDataTypeProperties()) {
+ properties.Add(CreateModelProperty(propertyInfo));
+ }
+ return properties;
+ }
+
+ ModelProperty CreateModelProperty(PropertyInfo propertyInfo)
+ {
+ return new ModelProperty() { Name = propertyInfo.Name };
+ }
#line default
#line hidden
@@ -49,92 +85,92 @@ namespace ICSharpCode.AspNet.Mvc.AspxCSharp {
public virtual string TransformText() {
this.GenerationEnvironment = null;
- #line 3 "D:\projects\dotnet\SharpDevelop.AspNetMvc\src\AddIns\BackendBindings\AspNet.Mvc\Project\ItemTemplates\CSharp\CodeTemplates\AddView\AspxCSharp\List.tt"
+ #line 5 "D:\projects\dotnet\SharpDevelop.AspNetMvc\src\AddIns\BackendBindings\AspNet.Mvc\Project\ItemTemplates\CSharp\CodeTemplates\AddView\AspxCSharp\List.tt"
if (MvcHost.IsPartialView) {
#line default
#line hidden
- #line 4 "D:\projects\dotnet\SharpDevelop.AspNetMvc\src\AddIns\BackendBindings\AspNet.Mvc\Project\ItemTemplates\CSharp\CodeTemplates\AddView\AspxCSharp\List.tt"
+ #line 6 "D:\projects\dotnet\SharpDevelop.AspNetMvc\src\AddIns\BackendBindings\AspNet.Mvc\Project\ItemTemplates\CSharp\CodeTemplates\AddView\AspxCSharp\List.tt"
this.Write("<%@ Control Language=\"C#\" Inherits=\"System.Web.Mvc.ViewUserControl\" %>\r\n\r\n");
#line default
#line hidden
- #line 6 "D:\projects\dotnet\SharpDevelop.AspNetMvc\src\AddIns\BackendBindings\AspNet.Mvc\Project\ItemTemplates\CSharp\CodeTemplates\AddView\AspxCSharp\List.tt"
+ #line 8 "D:\projects\dotnet\SharpDevelop.AspNetMvc\src\AddIns\BackendBindings\AspNet.Mvc\Project\ItemTemplates\CSharp\CodeTemplates\AddView\AspxCSharp\List.tt"
} else if (MvcHost.IsContentPage) {
#line default
#line hidden
- #line 7 "D:\projects\dotnet\SharpDevelop.AspNetMvc\src\AddIns\BackendBindings\AspNet.Mvc\Project\ItemTemplates\CSharp\CodeTemplates\AddView\AspxCSharp\List.tt"
+ #line 9 "D:\projects\dotnet\SharpDevelop.AspNetMvc\src\AddIns\BackendBindings\AspNet.Mvc\Project\ItemTemplates\CSharp\CodeTemplates\AddView\AspxCSharp\List.tt"
this.Write("<%@ Page Language=\"C#\" MasterPageFile=\"");
#line default
#line hidden
- #line 7 "D:\projects\dotnet\SharpDevelop.AspNetMvc\src\AddIns\BackendBindings\AspNet.Mvc\Project\ItemTemplates\CSharp\CodeTemplates\AddView\AspxCSharp\List.tt"
+ #line 9 "D:\projects\dotnet\SharpDevelop.AspNetMvc\src\AddIns\BackendBindings\AspNet.Mvc\Project\ItemTemplates\CSharp\CodeTemplates\AddView\AspxCSharp\List.tt"
this.Write(this.ToStringHelper.ToStringWithCulture( MvcHost.MasterPageFile ));
#line default
#line hidden
- #line 7 "D:\projects\dotnet\SharpDevelop.AspNetMvc\src\AddIns\BackendBindings\AspNet.Mvc\Project\ItemTemplates\CSharp\CodeTemplates\AddView\AspxCSharp\List.tt"
+ #line 9 "D:\projects\dotnet\SharpDevelop.AspNetMvc\src\AddIns\BackendBindings\AspNet.Mvc\Project\ItemTemplates\CSharp\CodeTemplates\AddView\AspxCSharp\List.tt"
this.Write("\" Inherits=\"System.Web.Mvc.ViewPage\" %>\r\n\r\n\r" +
"\n");
#line default
#line hidden
- #line 10 "D:\projects\dotnet\SharpDevelop.AspNetMvc\src\AddIns\BackendBindings\AspNet.Mvc\Project\ItemTemplates\CSharp\CodeTemplates\AddView\AspxCSharp\List.tt"
+ #line 12 "D:\projects\dotnet\SharpDevelop.AspNetMvc\src\AddIns\BackendBindings\AspNet.Mvc\Project\ItemTemplates\CSharp\CodeTemplates\AddView\AspxCSharp\List.tt"
this.Write(this.ToStringHelper.ToStringWithCulture( MvcHost.ViewName ));
#line default
#line hidden
- #line 10 "D:\projects\dotnet\SharpDevelop.AspNetMvc\src\AddIns\BackendBindings\AspNet.Mvc\Project\ItemTemplates\CSharp\CodeTemplates\AddView\AspxCSharp\List.tt"
+ #line 12 "D:\projects\dotnet\SharpDevelop.AspNetMvc\src\AddIns\BackendBindings\AspNet.Mvc\Project\ItemTemplates\CSharp\CodeTemplates\AddView\AspxCSharp\List.tt"
this.Write("\r\n\r\n\r\n\r\n");
#line default
#line hidden
- #line 14 "D:\projects\dotnet\SharpDevelop.AspNetMvc\src\AddIns\BackendBindings\AspNet.Mvc\Project\ItemTemplates\CSharp\CodeTemplates\AddView\AspxCSharp\List.tt"
+ #line 16 "D:\projects\dotnet\SharpDevelop.AspNetMvc\src\AddIns\BackendBindings\AspNet.Mvc\Project\ItemTemplates\CSharp\CodeTemplates\AddView\AspxCSharp\List.tt"
PushIndent("\t");
} else {
@@ -143,37 +179,37 @@ namespace ICSharpCode.AspNet.Mvc.AspxCSharp {
#line default
#line hidden
- #line 18 "D:\projects\dotnet\SharpDevelop.AspNetMvc\src\AddIns\BackendBindings\AspNet.Mvc\Project\ItemTemplates\CSharp\CodeTemplates\AddView\AspxCSharp\List.tt"
+ #line 20 "D:\projects\dotnet\SharpDevelop.AspNetMvc\src\AddIns\BackendBindings\AspNet.Mvc\Project\ItemTemplates\CSharp\CodeTemplates\AddView\AspxCSharp\List.tt"
this.Write("<%@ Page Language=\"C#\" Inherits=\"System.Web.Mvc.ViewPage\" %>\r\n\r\n\r\n\r\n\t\r\n\t\t");
#line default
#line hidden
- #line 23 "D:\projects\dotnet\SharpDevelop.AspNetMvc\src\AddIns\BackendBindings\AspNet.Mvc\Project\ItemTemplates\CSharp\CodeTemplates\AddView\AspxCSharp\List.tt"
+ #line 25 "D:\projects\dotnet\SharpDevelop.AspNetMvc\src\AddIns\BackendBindings\AspNet.Mvc\Project\ItemTemplates\CSharp\CodeTemplates\AddView\AspxCSharp\List.tt"
this.Write(this.ToStringHelper.ToStringWithCulture( MvcHost.ViewName ));
#line default
#line hidden
- #line 23 "D:\projects\dotnet\SharpDevelop.AspNetMvc\src\AddIns\BackendBindings\AspNet.Mvc\Project\ItemTemplates\CSharp\CodeTemplates\AddView\AspxCSharp\List.tt"
+ #line 25 "D:\projects\dotnet\SharpDevelop.AspNetMvc\src\AddIns\BackendBindings\AspNet.Mvc\Project\ItemTemplates\CSharp\CodeTemplates\AddView\AspxCSharp\List.tt"
this.Write("\r\n\t\r\n\t\r\n");
#line default
#line hidden
- #line 26 "D:\projects\dotnet\SharpDevelop.AspNetMvc\src\AddIns\BackendBindings\AspNet.Mvc\Project\ItemTemplates\CSharp\CodeTemplates\AddView\AspxCSharp\List.tt"
+ #line 28 "D:\projects\dotnet\SharpDevelop.AspNetMvc\src\AddIns\BackendBindings\AspNet.Mvc\Project\ItemTemplates\CSharp\CodeTemplates\AddView\AspxCSharp\List.tt"
PushIndent("\t\t");
}
@@ -182,27 +218,99 @@ namespace ICSharpCode.AspNet.Mvc.AspxCSharp {
#line default
#line hidden
- #line 30 "D:\projects\dotnet\SharpDevelop.AspNetMvc\src\AddIns\BackendBindings\AspNet.Mvc\Project\ItemTemplates\CSharp\CodeTemplates\AddView\AspxCSharp\List.tt"
- this.Write(@"
- <%: Html.ActionLink(""Create"", ""Create"") %>
-
-
- <% foreach (var item in Model) { %>
-
- |
- <%: Html.ActionLink(""Edit"", ""Edit"") %> |
- <%: Html.ActionLink(""Details"", ""Details"") %> |
- <%: Html.ActionLink(""Delete"", ""Delete"") %>
- |
-
- <% } %>
-
-");
+ #line 32 "D:\projects\dotnet\SharpDevelop.AspNetMvc\src\AddIns\BackendBindings\AspNet.Mvc\Project\ItemTemplates\CSharp\CodeTemplates\AddView\AspxCSharp\List.tt"
+ this.Write("\r\n\t<%: Html.ActionLink(\"Create\", \"Create\") %>\r\n
\r\n\r\n");
+
+ #line default
+ #line hidden
+
+ #line 36 "D:\projects\dotnet\SharpDevelop.AspNetMvc\src\AddIns\BackendBindings\AspNet.Mvc\Project\ItemTemplates\CSharp\CodeTemplates\AddView\AspxCSharp\List.tt"
+
+ if (ModelHasProperties) {
+ foreach (ModelProperty modelProperty in ModelProperties) {
+
+
+ #line default
+ #line hidden
+
+ #line 40 "D:\projects\dotnet\SharpDevelop.AspNetMvc\src\AddIns\BackendBindings\AspNet.Mvc\Project\ItemTemplates\CSharp\CodeTemplates\AddView\AspxCSharp\List.tt"
+ this.Write("\t\r\n\t\t| \r\n\t\t\t<%: Html.LabelFor(model => model.");
+
+ #line default
+ #line hidden
+
+ #line 42 "D:\projects\dotnet\SharpDevelop.AspNetMvc\src\AddIns\BackendBindings\AspNet.Mvc\Project\ItemTemplates\CSharp\CodeTemplates\AddView\AspxCSharp\List.tt"
+ this.Write(this.ToStringHelper.ToStringWithCulture( modelProperty.Name ));
+
+ #line default
+ #line hidden
+
+ #line 42 "D:\projects\dotnet\SharpDevelop.AspNetMvc\src\AddIns\BackendBindings\AspNet.Mvc\Project\ItemTemplates\CSharp\CodeTemplates\AddView\AspxCSharp\List.tt"
+ this.Write(") %>\r\n\t\t | \r\n\t\t | \r\n\t
\r\n\t\r\n");
+
+ #line default
+ #line hidden
+
+ #line 47 "D:\projects\dotnet\SharpDevelop.AspNetMvc\src\AddIns\BackendBindings\AspNet.Mvc\Project\ItemTemplates\CSharp\CodeTemplates\AddView\AspxCSharp\List.tt"
+
+ }
+ }
+
+
+ #line default
+ #line hidden
+
+ #line 51 "D:\projects\dotnet\SharpDevelop.AspNetMvc\src\AddIns\BackendBindings\AspNet.Mvc\Project\ItemTemplates\CSharp\CodeTemplates\AddView\AspxCSharp\List.tt"
+ this.Write("<% foreach (var item in Model) { %>\r\n\t\r\n");
+
+ #line default
+ #line hidden
+
+ #line 53 "D:\projects\dotnet\SharpDevelop.AspNetMvc\src\AddIns\BackendBindings\AspNet.Mvc\Project\ItemTemplates\CSharp\CodeTemplates\AddView\AspxCSharp\List.tt"
+
+ if (ModelHasProperties) {
+ foreach (ModelProperty modelProperty in ModelProperties) {
+
+
+ #line default
+ #line hidden
+
+ #line 57 "D:\projects\dotnet\SharpDevelop.AspNetMvc\src\AddIns\BackendBindings\AspNet.Mvc\Project\ItemTemplates\CSharp\CodeTemplates\AddView\AspxCSharp\List.tt"
+ this.Write("\t\t| \r\n\t\t\t<%: Html.DisplayFor(model => model.");
+
+ #line default
+ #line hidden
+
+ #line 58 "D:\projects\dotnet\SharpDevelop.AspNetMvc\src\AddIns\BackendBindings\AspNet.Mvc\Project\ItemTemplates\CSharp\CodeTemplates\AddView\AspxCSharp\List.tt"
+ this.Write(this.ToStringHelper.ToStringWithCulture( modelProperty.Name ));
+
+ #line default
+ #line hidden
+
+ #line 58 "D:\projects\dotnet\SharpDevelop.AspNetMvc\src\AddIns\BackendBindings\AspNet.Mvc\Project\ItemTemplates\CSharp\CodeTemplates\AddView\AspxCSharp\List.tt"
+ this.Write(") %>\r\n\t\t | \r\n");
+
+ #line default
+ #line hidden
+
+ #line 60 "D:\projects\dotnet\SharpDevelop.AspNetMvc\src\AddIns\BackendBindings\AspNet.Mvc\Project\ItemTemplates\CSharp\CodeTemplates\AddView\AspxCSharp\List.tt"
+
+ }
+ }
+
+
+ #line default
+ #line hidden
+
+ #line 64 "D:\projects\dotnet\SharpDevelop.AspNetMvc\src\AddIns\BackendBindings\AspNet.Mvc\Project\ItemTemplates\CSharp\CodeTemplates\AddView\AspxCSharp\List.tt"
+ this.Write("\t\t\r\n\t\t\t<%: Html.ActionLink(\"Edit\", \"Edit\") %> |\r\n\t\t\t<%: Html.ActionLink(\"Deta" +
+ "ils\", \"Details\") %> |\r\n\t\t\t<%: Html.ActionLink(\"Delete\", \"Delete\") %>\r\n\t\t | \r\n\t" +
+ "
\r\n<% } %>\r\n
\r\n");
#line default
#line hidden
- #line 44 "D:\projects\dotnet\SharpDevelop.AspNetMvc\src\AddIns\BackendBindings\AspNet.Mvc\Project\ItemTemplates\CSharp\CodeTemplates\AddView\AspxCSharp\List.tt"
+ #line 72 "D:\projects\dotnet\SharpDevelop.AspNetMvc\src\AddIns\BackendBindings\AspNet.Mvc\Project\ItemTemplates\CSharp\CodeTemplates\AddView\AspxCSharp\List.tt"
if (MvcHost.IsPartialView) {
// Do nothing.
@@ -213,13 +321,13 @@ namespace ICSharpCode.AspNet.Mvc.AspxCSharp {
#line default
#line hidden
- #line 50 "D:\projects\dotnet\SharpDevelop.AspNetMvc\src\AddIns\BackendBindings\AspNet.Mvc\Project\ItemTemplates\CSharp\CodeTemplates\AddView\AspxCSharp\List.tt"
+ #line 78 "D:\projects\dotnet\SharpDevelop.AspNetMvc\src\AddIns\BackendBindings\AspNet.Mvc\Project\ItemTemplates\CSharp\CodeTemplates\AddView\AspxCSharp\List.tt"
this.Write("\r\n");
#line default
#line hidden
- #line 51 "D:\projects\dotnet\SharpDevelop.AspNetMvc\src\AddIns\BackendBindings\AspNet.Mvc\Project\ItemTemplates\CSharp\CodeTemplates\AddView\AspxCSharp\List.tt"
+ #line 79 "D:\projects\dotnet\SharpDevelop.AspNetMvc\src\AddIns\BackendBindings\AspNet.Mvc\Project\ItemTemplates\CSharp\CodeTemplates\AddView\AspxCSharp\List.tt"
} else {
PopIndent();
@@ -228,13 +336,13 @@ namespace ICSharpCode.AspNet.Mvc.AspxCSharp {
#line default
#line hidden
- #line 55 "D:\projects\dotnet\SharpDevelop.AspNetMvc\src\AddIns\BackendBindings\AspNet.Mvc\Project\ItemTemplates\CSharp\CodeTemplates\AddView\AspxCSharp\List.tt"
+ #line 83 "D:\projects\dotnet\SharpDevelop.AspNetMvc\src\AddIns\BackendBindings\AspNet.Mvc\Project\ItemTemplates\CSharp\CodeTemplates\AddView\AspxCSharp\List.tt"
this.Write("\t\r\n\r\n");
#line default
#line hidden
- #line 57 "D:\projects\dotnet\SharpDevelop.AspNetMvc\src\AddIns\BackendBindings\AspNet.Mvc\Project\ItemTemplates\CSharp\CodeTemplates\AddView\AspxCSharp\List.tt"
+ #line 85 "D:\projects\dotnet\SharpDevelop.AspNetMvc\src\AddIns\BackendBindings\AspNet.Mvc\Project\ItemTemplates\CSharp\CodeTemplates\AddView\AspxCSharp\List.tt"
}
#line default
diff --git a/src/AddIns/BackendBindings/AspNet.Mvc/Project/ItemTemplates/CSharp/CodeTemplates/AddView/AspxCSharp/List.tt b/src/AddIns/BackendBindings/AspNet.Mvc/Project/ItemTemplates/CSharp/CodeTemplates/AddView/AspxCSharp/List.tt
index 6fbbc3ab18..f3903609c8 100644
--- a/src/AddIns/BackendBindings/AspNet.Mvc/Project/ItemTemplates/CSharp/CodeTemplates/AddView/AspxCSharp/List.tt
+++ b/src/AddIns/BackendBindings/AspNet.Mvc/Project/ItemTemplates/CSharp/CodeTemplates/AddView/AspxCSharp/List.tt
@@ -1,5 +1,7 @@
<#@ template language="C#" HostSpecific="true" #>
<#@ import namespace="ICSharpCode.AspNet.Mvc" #>
+<#@ import namespace="System.Collections.Generic" #>
+<#@ import namespace="System.Reflection" #>
<# if (MvcHost.IsPartialView) { #>
<%@ Control Language="C#" Inherits="System.Web.Mvc.ViewUserControl>" %>
@@ -31,15 +33,41 @@
<%: Html.ActionLink("Create", "Create") %>
- <% foreach (var item in Model) { %>
+<#
+ if (ModelHasProperties) {
+ foreach (ModelProperty modelProperty in ModelProperties) {
+#>
+
+ |
+ <%: Html.LabelFor(model => model.<#= modelProperty.Name #>) %>
+ |
+ |
+
+
+<#
+ }
+ }
+#>
+<% foreach (var item in Model) { %>
+<#
+ if (ModelHasProperties) {
+ foreach (ModelProperty modelProperty in ModelProperties) {
+#>
+ |
+ <%: Html.DisplayFor(model => model.<#= modelProperty.Name #>) %>
+ |
+<#
+ }
+ }
+#>
<%: Html.ActionLink("Edit", "Edit") %> |
<%: Html.ActionLink("Details", "Details") %> |
<%: Html.ActionLink("Delete", "Delete") %>
|
- <% } %>
+<% } %>
<#
if (MvcHost.IsPartialView) {
@@ -60,6 +88,11 @@
get { return (MvcTextTemplateHost)Host; }
}
+ public class ModelProperty
+ {
+ public string Name { get; set; }
+ }
+
public string GetViewPageType()
{
string viewDataTypeName = MvcHost.ViewDataTypeName;
@@ -68,4 +101,33 @@
}
return String.Empty;
}
+
+ List modelProperties;
+
+ List ModelProperties {
+ get {
+ if (modelProperties == null) {
+ modelProperties = new List(GetModelProperties());
+ }
+ return modelProperties;
+ }
+ }
+
+ bool ModelHasProperties {
+ get { return ModelProperties.Count > 0; }
+ }
+
+ public IEnumerable GetModelProperties()
+ {
+ var properties = new List();
+ foreach (PropertyInfo propertyInfo in MvcHost.GetViewDataTypeProperties()) {
+ properties.Add(CreateModelProperty(propertyInfo));
+ }
+ return properties;
+ }
+
+ ModelProperty CreateModelProperty(PropertyInfo propertyInfo)
+ {
+ return new ModelProperty() { Name = propertyInfo.Name };
+ }
#>
\ No newline at end of file
diff --git a/src/AddIns/BackendBindings/AspNet.Mvc/Project/ItemTemplates/CSharp/CodeTemplates/AddView/CSHTML/List.cs b/src/AddIns/BackendBindings/AspNet.Mvc/Project/ItemTemplates/CSharp/CodeTemplates/AddView/CSHTML/List.cs
index 3e363a1272..c52e8d6b17 100644
--- a/src/AddIns/BackendBindings/AspNet.Mvc/Project/ItemTemplates/CSharp/CodeTemplates/AddView/CSHTML/List.cs
+++ b/src/AddIns/BackendBindings/AspNet.Mvc/Project/ItemTemplates/CSharp/CodeTemplates/AddView/CSHTML/List.cs
@@ -10,6 +10,8 @@
namespace ICSharpCode.AspNet.Mvc.CSHtml {
using ICSharpCode.AspNet.Mvc;
+ using System.Collections.Generic;
+ using System.Reflection;
using System;
@@ -18,12 +20,17 @@ namespace ICSharpCode.AspNet.Mvc.CSHtml {
private global::Microsoft.VisualStudio.TextTemplating.ITextTemplatingEngineHost hostValue;
- #line 54 "D:\projects\dotnet\SharpDevelop.AspNetMvc\src\AddIns\BackendBindings\AspNet.Mvc\Project\ItemTemplates\CSharp\CodeTemplates\AddView\CSHTML\List.tt"
+ #line 82 "D:\projects\dotnet\SharpDevelop.AspNetMvc\src\AddIns\BackendBindings\AspNet.Mvc\Project\ItemTemplates\CSharp\CodeTemplates\AddView\CSHTML\List.tt"
MvcTextTemplateHost MvcHost {
get { return (MvcTextTemplateHost)Host; }
}
+ public class ModelProperty
+ {
+ public string Name { get; set; }
+ }
+
public string GetModelDirective()
{
string viewDataTypeName = MvcHost.ViewDataTypeName;
@@ -32,6 +39,35 @@ namespace ICSharpCode.AspNet.Mvc.CSHtml {
}
return String.Empty;
}
+
+ List modelProperties;
+
+ List ModelProperties {
+ get {
+ if (modelProperties == null) {
+ modelProperties = new List(GetModelProperties());
+ }
+ return modelProperties;
+ }
+ }
+
+ bool ModelHasProperties {
+ get { return ModelProperties.Count > 0; }
+ }
+
+ public IEnumerable GetModelProperties()
+ {
+ var properties = new List();
+ foreach (PropertyInfo propertyInfo in MvcHost.GetViewDataTypeProperties()) {
+ properties.Add(CreateModelProperty(propertyInfo));
+ }
+ return properties;
+ }
+
+ ModelProperty CreateModelProperty(PropertyInfo propertyInfo)
+ {
+ return new ModelProperty() { Name = propertyInfo.Name };
+ }
#line default
#line hidden
@@ -49,19 +85,19 @@ namespace ICSharpCode.AspNet.Mvc.CSHtml {
public virtual string TransformText() {
this.GenerationEnvironment = null;
- #line 4 "D:\projects\dotnet\SharpDevelop.AspNetMvc\src\AddIns\BackendBindings\AspNet.Mvc\Project\ItemTemplates\CSharp\CodeTemplates\AddView\CSHTML\List.tt"
+ #line 6 "D:\projects\dotnet\SharpDevelop.AspNetMvc\src\AddIns\BackendBindings\AspNet.Mvc\Project\ItemTemplates\CSharp\CodeTemplates\AddView\CSHTML\List.tt"
this.Write(this.ToStringHelper.ToStringWithCulture( GetModelDirective() ));
#line default
#line hidden
- #line 4 "D:\projects\dotnet\SharpDevelop.AspNetMvc\src\AddIns\BackendBindings\AspNet.Mvc\Project\ItemTemplates\CSharp\CodeTemplates\AddView\CSHTML\List.tt"
+ #line 6 "D:\projects\dotnet\SharpDevelop.AspNetMvc\src\AddIns\BackendBindings\AspNet.Mvc\Project\ItemTemplates\CSharp\CodeTemplates\AddView\CSHTML\List.tt"
this.Write("\r\n\r\n");
#line default
#line hidden
- #line 6 "D:\projects\dotnet\SharpDevelop.AspNetMvc\src\AddIns\BackendBindings\AspNet.Mvc\Project\ItemTemplates\CSharp\CodeTemplates\AddView\CSHTML\List.tt"
+ #line 8 "D:\projects\dotnet\SharpDevelop.AspNetMvc\src\AddIns\BackendBindings\AspNet.Mvc\Project\ItemTemplates\CSharp\CodeTemplates\AddView\CSHTML\List.tt"
if (MvcHost.IsPartialView) {
// Do nothing.
@@ -71,49 +107,49 @@ namespace ICSharpCode.AspNet.Mvc.CSHtml {
#line default
#line hidden
- #line 11 "D:\projects\dotnet\SharpDevelop.AspNetMvc\src\AddIns\BackendBindings\AspNet.Mvc\Project\ItemTemplates\CSharp\CodeTemplates\AddView\CSHTML\List.tt"
+ #line 13 "D:\projects\dotnet\SharpDevelop.AspNetMvc\src\AddIns\BackendBindings\AspNet.Mvc\Project\ItemTemplates\CSharp\CodeTemplates\AddView\CSHTML\List.tt"
this.Write("@{\r\n\tViewBag.Title = \"");
#line default
#line hidden
- #line 12 "D:\projects\dotnet\SharpDevelop.AspNetMvc\src\AddIns\BackendBindings\AspNet.Mvc\Project\ItemTemplates\CSharp\CodeTemplates\AddView\CSHTML\List.tt"
+ #line 14 "D:\projects\dotnet\SharpDevelop.AspNetMvc\src\AddIns\BackendBindings\AspNet.Mvc\Project\ItemTemplates\CSharp\CodeTemplates\AddView\CSHTML\List.tt"
this.Write(this.ToStringHelper.ToStringWithCulture( MvcHost.ViewName ));
#line default
#line hidden
- #line 12 "D:\projects\dotnet\SharpDevelop.AspNetMvc\src\AddIns\BackendBindings\AspNet.Mvc\Project\ItemTemplates\CSharp\CodeTemplates\AddView\CSHTML\List.tt"
+ #line 14 "D:\projects\dotnet\SharpDevelop.AspNetMvc\src\AddIns\BackendBindings\AspNet.Mvc\Project\ItemTemplates\CSharp\CodeTemplates\AddView\CSHTML\List.tt"
this.Write("\";\r\n\tLayout = \"");
#line default
#line hidden
- #line 13 "D:\projects\dotnet\SharpDevelop.AspNetMvc\src\AddIns\BackendBindings\AspNet.Mvc\Project\ItemTemplates\CSharp\CodeTemplates\AddView\CSHTML\List.tt"
+ #line 15 "D:\projects\dotnet\SharpDevelop.AspNetMvc\src\AddIns\BackendBindings\AspNet.Mvc\Project\ItemTemplates\CSharp\CodeTemplates\AddView\CSHTML\List.tt"
this.Write(this.ToStringHelper.ToStringWithCulture( MvcHost.MasterPageFile ));
#line default
#line hidden
- #line 13 "D:\projects\dotnet\SharpDevelop.AspNetMvc\src\AddIns\BackendBindings\AspNet.Mvc\Project\ItemTemplates\CSharp\CodeTemplates\AddView\CSHTML\List.tt"
+ #line 15 "D:\projects\dotnet\SharpDevelop.AspNetMvc\src\AddIns\BackendBindings\AspNet.Mvc\Project\ItemTemplates\CSharp\CodeTemplates\AddView\CSHTML\List.tt"
this.Write("\";\r\n}\r\n\r\n");
#line default
#line hidden
- #line 16 "D:\projects\dotnet\SharpDevelop.AspNetMvc\src\AddIns\BackendBindings\AspNet.Mvc\Project\ItemTemplates\CSharp\CodeTemplates\AddView\CSHTML\List.tt"
+ #line 18 "D:\projects\dotnet\SharpDevelop.AspNetMvc\src\AddIns\BackendBindings\AspNet.Mvc\Project\ItemTemplates\CSharp\CodeTemplates\AddView\CSHTML\List.tt"
this.Write(this.ToStringHelper.ToStringWithCulture( MvcHost.ViewName ));
#line default
#line hidden
- #line 16 "D:\projects\dotnet\SharpDevelop.AspNetMvc\src\AddIns\BackendBindings\AspNet.Mvc\Project\ItemTemplates\CSharp\CodeTemplates\AddView\CSHTML\List.tt"
+ #line 18 "D:\projects\dotnet\SharpDevelop.AspNetMvc\src\AddIns\BackendBindings\AspNet.Mvc\Project\ItemTemplates\CSharp\CodeTemplates\AddView\CSHTML\List.tt"
this.Write("
\r\n\r\n");
#line default
#line hidden
- #line 18 "D:\projects\dotnet\SharpDevelop.AspNetMvc\src\AddIns\BackendBindings\AspNet.Mvc\Project\ItemTemplates\CSharp\CodeTemplates\AddView\CSHTML\List.tt"
+ #line 20 "D:\projects\dotnet\SharpDevelop.AspNetMvc\src\AddIns\BackendBindings\AspNet.Mvc\Project\ItemTemplates\CSharp\CodeTemplates\AddView\CSHTML\List.tt"
} else {
@@ -121,25 +157,25 @@ namespace ICSharpCode.AspNet.Mvc.CSHtml {
#line default
#line hidden
- #line 21 "D:\projects\dotnet\SharpDevelop.AspNetMvc\src\AddIns\BackendBindings\AspNet.Mvc\Project\ItemTemplates\CSharp\CodeTemplates\AddView\CSHTML\List.tt"
+ #line 23 "D:\projects\dotnet\SharpDevelop.AspNetMvc\src\AddIns\BackendBindings\AspNet.Mvc\Project\ItemTemplates\CSharp\CodeTemplates\AddView\CSHTML\List.tt"
this.Write("\r\n\r\n\t\r\n\t\t");
#line default
#line hidden
- #line 24 "D:\projects\dotnet\SharpDevelop.AspNetMvc\src\AddIns\BackendBindings\AspNet.Mvc\Project\ItemTemplates\CSharp\CodeTemplates\AddView\CSHTML\List.tt"
+ #line 26 "D:\projects\dotnet\SharpDevelop.AspNetMvc\src\AddIns\BackendBindings\AspNet.Mvc\Project\ItemTemplates\CSharp\CodeTemplates\AddView\CSHTML\List.tt"
this.Write(this.ToStringHelper.ToStringWithCulture( MvcHost.ViewName ));
#line default
#line hidden
- #line 24 "D:\projects\dotnet\SharpDevelop.AspNetMvc\src\AddIns\BackendBindings\AspNet.Mvc\Project\ItemTemplates\CSharp\CodeTemplates\AddView\CSHTML\List.tt"
+ #line 26 "D:\projects\dotnet\SharpDevelop.AspNetMvc\src\AddIns\BackendBindings\AspNet.Mvc\Project\ItemTemplates\CSharp\CodeTemplates\AddView\CSHTML\List.tt"
this.Write("\r\n\t\r\n\t\r\n");
#line default
#line hidden
- #line 27 "D:\projects\dotnet\SharpDevelop.AspNetMvc\src\AddIns\BackendBindings\AspNet.Mvc\Project\ItemTemplates\CSharp\CodeTemplates\AddView\CSHTML\List.tt"
+ #line 29 "D:\projects\dotnet\SharpDevelop.AspNetMvc\src\AddIns\BackendBindings\AspNet.Mvc\Project\ItemTemplates\CSharp\CodeTemplates\AddView\CSHTML\List.tt"
PushIndent("\t\t");
}
@@ -148,27 +184,99 @@ namespace ICSharpCode.AspNet.Mvc.CSHtml {
#line default
#line hidden
- #line 31 "D:\projects\dotnet\SharpDevelop.AspNetMvc\src\AddIns\BackendBindings\AspNet.Mvc\Project\ItemTemplates\CSharp\CodeTemplates\AddView\CSHTML\List.tt"
- this.Write(@"
- @Html.ActionLink(""Create"", ""Create"")
-
-
- @foreach (var item in Model) {
-
- |
- @Html.ActionLink(""Edit"", ""Edit"") |
- @Html.ActionLink(""Details"", ""Details"") |
- @Html.ActionLink(""Delete"", ""Delete"")
- |
-
+ #line 33 "D:\projects\dotnet\SharpDevelop.AspNetMvc\src\AddIns\BackendBindings\AspNet.Mvc\Project\ItemTemplates\CSharp\CodeTemplates\AddView\CSHTML\List.tt"
+ this.Write("\r\n\t@Html.ActionLink(\"Create\", \"Create\")\r\n
\r\n\r\n");
+
+ #line default
+ #line hidden
+
+ #line 37 "D:\projects\dotnet\SharpDevelop.AspNetMvc\src\AddIns\BackendBindings\AspNet.Mvc\Project\ItemTemplates\CSharp\CodeTemplates\AddView\CSHTML\List.tt"
+
+ if (ModelHasProperties) {
+ foreach (ModelProperty modelProperty in ModelProperties) {
+
+
+ #line default
+ #line hidden
+
+ #line 41 "D:\projects\dotnet\SharpDevelop.AspNetMvc\src\AddIns\BackendBindings\AspNet.Mvc\Project\ItemTemplates\CSharp\CodeTemplates\AddView\CSHTML\List.tt"
+ this.Write("\t\r\n\t\t| \r\n\t\t\t@Html.LabelFor(model => model.");
+
+ #line default
+ #line hidden
+
+ #line 43 "D:\projects\dotnet\SharpDevelop.AspNetMvc\src\AddIns\BackendBindings\AspNet.Mvc\Project\ItemTemplates\CSharp\CodeTemplates\AddView\CSHTML\List.tt"
+ this.Write(this.ToStringHelper.ToStringWithCulture( modelProperty.Name ));
+
+ #line default
+ #line hidden
+
+ #line 43 "D:\projects\dotnet\SharpDevelop.AspNetMvc\src\AddIns\BackendBindings\AspNet.Mvc\Project\ItemTemplates\CSharp\CodeTemplates\AddView\CSHTML\List.tt"
+ this.Write(")\r\n\t\t | \r\n\t\t | \r\n\t
\r\n\t\r\n");
+
+ #line default
+ #line hidden
+
+ #line 48 "D:\projects\dotnet\SharpDevelop.AspNetMvc\src\AddIns\BackendBindings\AspNet.Mvc\Project\ItemTemplates\CSharp\CodeTemplates\AddView\CSHTML\List.tt"
+
+ }
+ }
+
+
+ #line default
+ #line hidden
+
+ #line 52 "D:\projects\dotnet\SharpDevelop.AspNetMvc\src\AddIns\BackendBindings\AspNet.Mvc\Project\ItemTemplates\CSharp\CodeTemplates\AddView\CSHTML\List.tt"
+ this.Write("@foreach (var item in Model) {\r\n\t\r\n");
+
+ #line default
+ #line hidden
+
+ #line 54 "D:\projects\dotnet\SharpDevelop.AspNetMvc\src\AddIns\BackendBindings\AspNet.Mvc\Project\ItemTemplates\CSharp\CodeTemplates\AddView\CSHTML\List.tt"
+
+ if (ModelHasProperties) {
+ foreach (ModelProperty modelProperty in ModelProperties) {
+
+
+ #line default
+ #line hidden
+
+ #line 58 "D:\projects\dotnet\SharpDevelop.AspNetMvc\src\AddIns\BackendBindings\AspNet.Mvc\Project\ItemTemplates\CSharp\CodeTemplates\AddView\CSHTML\List.tt"
+ this.Write("\t\t| \r\n\t\t\t@Html.DisplayFor(model => model.");
+
+ #line default
+ #line hidden
+
+ #line 59 "D:\projects\dotnet\SharpDevelop.AspNetMvc\src\AddIns\BackendBindings\AspNet.Mvc\Project\ItemTemplates\CSharp\CodeTemplates\AddView\CSHTML\List.tt"
+ this.Write(this.ToStringHelper.ToStringWithCulture( modelProperty.Name ));
+
+ #line default
+ #line hidden
+
+ #line 59 "D:\projects\dotnet\SharpDevelop.AspNetMvc\src\AddIns\BackendBindings\AspNet.Mvc\Project\ItemTemplates\CSharp\CodeTemplates\AddView\CSHTML\List.tt"
+ this.Write(")\r\n\t\t | \r\n");
+
+ #line default
+ #line hidden
+
+ #line 61 "D:\projects\dotnet\SharpDevelop.AspNetMvc\src\AddIns\BackendBindings\AspNet.Mvc\Project\ItemTemplates\CSharp\CodeTemplates\AddView\CSHTML\List.tt"
+
+ }
}
-
-");
+
+
+ #line default
+ #line hidden
+
+ #line 65 "D:\projects\dotnet\SharpDevelop.AspNetMvc\src\AddIns\BackendBindings\AspNet.Mvc\Project\ItemTemplates\CSharp\CodeTemplates\AddView\CSHTML\List.tt"
+ this.Write("\t\t\r\n\t\t\t@Html.ActionLink(\"Edit\", \"Edit\") |\r\n\t\t\t@Html.ActionLink(\"Details\", \"De" +
+ "tails\") |\r\n\t\t\t@Html.ActionLink(\"Delete\", \"Delete\")\r\n\t\t | \r\n\t\r\n}\r\n
" +
+ "\r\n");
#line default
#line hidden
- #line 45 "D:\projects\dotnet\SharpDevelop.AspNetMvc\src\AddIns\BackendBindings\AspNet.Mvc\Project\ItemTemplates\CSharp\CodeTemplates\AddView\CSHTML\List.tt"
+ #line 73 "D:\projects\dotnet\SharpDevelop.AspNetMvc\src\AddIns\BackendBindings\AspNet.Mvc\Project\ItemTemplates\CSharp\CodeTemplates\AddView\CSHTML\List.tt"
if (MvcHost.IsPartialView) {
// Do nothing.
@@ -179,13 +287,13 @@ namespace ICSharpCode.AspNet.Mvc.CSHtml {
#line default
#line hidden
- #line 51 "D:\projects\dotnet\SharpDevelop.AspNetMvc\src\AddIns\BackendBindings\AspNet.Mvc\Project\ItemTemplates\CSharp\CodeTemplates\AddView\CSHTML\List.tt"
+ #line 79 "D:\projects\dotnet\SharpDevelop.AspNetMvc\src\AddIns\BackendBindings\AspNet.Mvc\Project\ItemTemplates\CSharp\CodeTemplates\AddView\CSHTML\List.tt"
this.Write("\t\r\n\r\n");
#line default
#line hidden
- #line 53 "D:\projects\dotnet\SharpDevelop.AspNetMvc\src\AddIns\BackendBindings\AspNet.Mvc\Project\ItemTemplates\CSharp\CodeTemplates\AddView\CSHTML\List.tt"
+ #line 81 "D:\projects\dotnet\SharpDevelop.AspNetMvc\src\AddIns\BackendBindings\AspNet.Mvc\Project\ItemTemplates\CSharp\CodeTemplates\AddView\CSHTML\List.tt"
}
#line default
diff --git a/src/AddIns/BackendBindings/AspNet.Mvc/Project/ItemTemplates/CSharp/CodeTemplates/AddView/CSHTML/List.tt b/src/AddIns/BackendBindings/AspNet.Mvc/Project/ItemTemplates/CSharp/CodeTemplates/AddView/CSHTML/List.tt
index e927efeafe..7696ad410e 100644
--- a/src/AddIns/BackendBindings/AspNet.Mvc/Project/ItemTemplates/CSharp/CodeTemplates/AddView/CSHTML/List.tt
+++ b/src/AddIns/BackendBindings/AspNet.Mvc/Project/ItemTemplates/CSharp/CodeTemplates/AddView/CSHTML/List.tt
@@ -1,5 +1,7 @@
<#@ template language="C#" HostSpecific="true" #>
<#@ import namespace="ICSharpCode.AspNet.Mvc" #>
+<#@ import namespace="System.Collections.Generic" #>
+<#@ import namespace="System.Reflection" #>
<#@ output extension=".cshtml" #>
<#= GetModelDirective() #>
@@ -32,15 +34,41 @@
@Html.ActionLink("Create", "Create")
- @foreach (var item in Model) {
-
- |
- @Html.ActionLink("Edit", "Edit") |
- @Html.ActionLink("Details", "Details") |
- @Html.ActionLink("Delete", "Delete")
- |
-
+<#
+ if (ModelHasProperties) {
+ foreach (ModelProperty modelProperty in ModelProperties) {
+#>
+
+ |
+ @Html.LabelFor(model => model.<#= modelProperty.Name #>)
+ |
+ |
+
+
+<#
+ }
+ }
+#>
+@foreach (var item in Model) {
+
+<#
+ if (ModelHasProperties) {
+ foreach (ModelProperty modelProperty in ModelProperties) {
+#>
+ |
+ @Html.DisplayFor(model => model.<#= modelProperty.Name #>)
+ |
+<#
+ }
}
+#>
+
+ @Html.ActionLink("Edit", "Edit") |
+ @Html.ActionLink("Details", "Details") |
+ @Html.ActionLink("Delete", "Delete")
+ |
+
+}
<#
if (MvcHost.IsPartialView) {
@@ -56,6 +84,11 @@
get { return (MvcTextTemplateHost)Host; }
}
+ public class ModelProperty
+ {
+ public string Name { get; set; }
+ }
+
public string GetModelDirective()
{
string viewDataTypeName = MvcHost.ViewDataTypeName;
@@ -64,4 +97,33 @@
}
return String.Empty;
}
+
+ List modelProperties;
+
+ List ModelProperties {
+ get {
+ if (modelProperties == null) {
+ modelProperties = new List(GetModelProperties());
+ }
+ return modelProperties;
+ }
+ }
+
+ bool ModelHasProperties {
+ get { return ModelProperties.Count > 0; }
+ }
+
+ public IEnumerable GetModelProperties()
+ {
+ var properties = new List();
+ foreach (PropertyInfo propertyInfo in MvcHost.GetViewDataTypeProperties()) {
+ properties.Add(CreateModelProperty(propertyInfo));
+ }
+ return properties;
+ }
+
+ ModelProperty CreateModelProperty(PropertyInfo propertyInfo)
+ {
+ return new ModelProperty() { Name = propertyInfo.Name };
+ }
#>
\ No newline at end of file
diff --git a/src/AddIns/BackendBindings/AspNet.Mvc/Project/ItemTemplates/VisualBasic/CodeTemplates/AddView/AspxVisualBasic/List.tt b/src/AddIns/BackendBindings/AspNet.Mvc/Project/ItemTemplates/VisualBasic/CodeTemplates/AddView/AspxVisualBasic/List.tt
index bb10da64c5..2843cd5f50 100644
--- a/src/AddIns/BackendBindings/AspNet.Mvc/Project/ItemTemplates/VisualBasic/CodeTemplates/AddView/AspxVisualBasic/List.tt
+++ b/src/AddIns/BackendBindings/AspNet.Mvc/Project/ItemTemplates/VisualBasic/CodeTemplates/AddView/AspxVisualBasic/List.tt
@@ -1,6 +1,8 @@
<#@ template language="VB" HostSpecific="true" #>
<#@ import namespace="ICSharpCode.AspNet.Mvc" #>
<#@ import namespace="Microsoft.VisualBasic.Constants" #>
+<#@ import namespace="System.Collections.Generic" #>
+<#@ import namespace="System.Reflection" #>
<# If MvcHost.IsPartialView Then #>
<%@ Control Language="VB" Inherits="System.Web.Mvc.ViewUserControl<#= GetViewPageType() #>" %>
@@ -32,15 +34,41 @@
<%: Html.ActionLink("Create", "Create") %>
- <% For Each item in Model %>
+<#
+ If ModelHasProperties Then
+ For Each modelProperty As ModelProperty in ModelProperties
+#>
+
+ |
+ <%: Html.LabelFor(Function(model) model.<#= modelProperty.Name #>) %>
+ |
+ |
+
+
+<#
+ Next
+ End If
+#>
+<% For Each item in Model %>
+<#
+ If ModelHasProperties Then
+ For Each modelProperty As ModelProperty in ModelProperties
+#>
+ |
+ @Html.DisplayFor(model => model.<#= modelProperty.Name #>)
+ |
+<#
+ Next
+ End If
+#>
<%: Html.ActionLink("Edit", "Edit") %> |
<%: Html.ActionLink("Details", "Details") %> |
<%: Html.ActionLink("Delete", "Delete") %>
|
- <% Next %>
+<% Next %>
<#
If MvcHost.IsPartialView Then
@@ -63,6 +91,10 @@
End Get
End Property
+ Public Class ModelProperty
+ Public Property Name As String
+ End Class
+
Public Function GetViewPageType() As String
Dim viewDataTypeName As String = MvcHost.ViewDataTypeName
If Not String.IsNullOrEmpty(viewDataTypeName) Then
@@ -70,4 +102,33 @@
End If
Return String.Empty
End Function
+
+ Private modelPropertiesList As List(Of ModelProperty)
+
+ ReadOnly Property ModelProperties As List(Of ModelProperty)
+ Get
+ If modelPropertiesList Is Nothing Then
+ modelPropertiesList = New List(Of ModelProperty)(GetModelProperties())
+ End If
+ Return modelPropertiesList
+ End Get
+ End Property
+
+ ReadOnly Property ModelHasProperties As Integer
+ Get
+ Return ModelProperties.Count > 0
+ End Get
+ End Property
+
+ Public Function GetModelProperties() As IEnumerable(Of ModelProperty)
+ Dim properties = New List(Of ModelProperty)()
+ For Each propertyInfo As PropertyInfo In MvcHost.GetViewDataTypeProperties()
+ properties.Add(CreateModelProperty(propertyInfo))
+ Next
+ Return properties
+ End Function
+
+ Function CreateModelProperty(ByVal propertyInfo As PropertyInfo) As ModelProperty
+ Return New ModelProperty() With { .Name = propertyInfo.Name }
+ End Function
#>
\ No newline at end of file
diff --git a/src/AddIns/BackendBindings/AspNet.Mvc/Project/ItemTemplates/VisualBasic/CodeTemplates/AddView/VBHTML/List.tt b/src/AddIns/BackendBindings/AspNet.Mvc/Project/ItemTemplates/VisualBasic/CodeTemplates/AddView/VBHTML/List.tt
index 1c67f3ef1f..05a8343b02 100644
--- a/src/AddIns/BackendBindings/AspNet.Mvc/Project/ItemTemplates/VisualBasic/CodeTemplates/AddView/VBHTML/List.tt
+++ b/src/AddIns/BackendBindings/AspNet.Mvc/Project/ItemTemplates/VisualBasic/CodeTemplates/AddView/VBHTML/List.tt
@@ -1,6 +1,8 @@
<#@ template language="VB" HostSpecific="true" #>
<#@ import namespace="ICSharpCode.AspNet.Mvc" #>
<#@ import namespace="Microsoft.VisualBasic.Constants" #>
+<#@ import namespace="System.Collections.Generic" #>
+<#@ import namespace="System.Reflection" #>
<#@ output extension=".vbhtml" #>
<#= GetModelDirective() #>
@@ -33,15 +35,41 @@ End Code
@Html.ActionLink("Create", "Create")
- @For Each item in Model
- @
- |
- @Html.ActionLink("Edit", "Edit") |
- @Html.ActionLink("Details", "Details") |
- @Html.ActionLink("Delete", "Delete")
- |
-
- Next
+<#
+ If ModelHasProperties Then
+ For Each modelProperty As ModelProperty in ModelProperties
+#>
+
+ |
+ @Html.LabelFor(Function(model) model.<#= modelProperty.Name #>)
+ |
+ |
+
+
+<#
+ Next
+ End If
+#>
+@For Each item in Model
+ @
+<#
+ If ModelHasProperties Then
+ For Each modelProperty As ModelProperty in ModelProperties
+#>
+ |
+ @Html.DisplayFor(model => model.<#= modelProperty.Name #>)
+ |
+<#
+ Next
+ End If
+#>
+
+ @Html.ActionLink("Edit", "Edit") |
+ @Html.ActionLink("Details", "Details") |
+ @Html.ActionLink("Delete", "Delete")
+ |
+
+Next
<#
If MvcHost.IsPartialView Then
@@ -59,6 +87,10 @@ End Code
End Get
End Property
+ Public Class ModelProperty
+ Public Property Name As String
+ End Class
+
Function GetModelDirective() As String
Dim viewDataTypeName As String = MvcHost.ViewDataTypeName
If Not String.IsNullOrEmpty(viewDataTypeName) Then
@@ -66,4 +98,33 @@ End Code
End If
Return String.Empty
End Function
+
+ Private modelPropertiesList As List(Of ModelProperty)
+
+ ReadOnly Property ModelProperties As List(Of ModelProperty)
+ Get
+ If modelPropertiesList Is Nothing Then
+ modelPropertiesList = New List(Of ModelProperty)(GetModelProperties())
+ End If
+ Return modelPropertiesList
+ End Get
+ End Property
+
+ ReadOnly Property ModelHasProperties As Integer
+ Get
+ Return ModelProperties.Count > 0
+ End Get
+ End Property
+
+ Public Function GetModelProperties() As IEnumerable(Of ModelProperty)
+ Dim properties = New List(Of ModelProperty)()
+ For Each propertyInfo As PropertyInfo In MvcHost.GetViewDataTypeProperties()
+ properties.Add(CreateModelProperty(propertyInfo))
+ Next
+ Return properties
+ End Function
+
+ Function CreateModelProperty(ByVal propertyInfo As PropertyInfo) As ModelProperty
+ Return New ModelProperty() With { .Name = propertyInfo.Name }
+ End Function
#>
\ No newline at end of file
diff --git a/src/AddIns/BackendBindings/AspNet.Mvc/Test/Src/CodeTemplates/AspxCSharpListViewTemplateTests.cs b/src/AddIns/BackendBindings/AspNet.Mvc/Test/Src/CodeTemplates/AspxCSharpListViewTemplateTests.cs
index 7b1885b969..8dace4737a 100644
--- a/src/AddIns/BackendBindings/AspNet.Mvc/Test/Src/CodeTemplates/AspxCSharpListViewTemplateTests.cs
+++ b/src/AddIns/BackendBindings/AspNet.Mvc/Test/Src/CodeTemplates/AspxCSharpListViewTemplateTests.cs
@@ -2,10 +2,13 @@
// This code is distributed under the GNU LGPL (for details please see \doc\license.txt)
using System;
+using System.Collections.Generic;
+using System.Linq;
+
using AspNet.Mvc.Tests.CodeTemplates.Models;
using AspNet.Mvc.Tests.Helpers;
-using AspxCSharp = ICSharpCode.AspNet.Mvc.AspxCSharp;
using NUnit.Framework;
+using AspxCSharp = ICSharpCode.AspNet.Mvc.AspxCSharp;
namespace AspNet.Mvc.Tests.CodeTemplates
{
@@ -22,6 +25,16 @@ namespace AspNet.Mvc.Tests.CodeTemplates
templatePreprocessor.Host = mvcHost;
}
+ IEnumerable GetModelProperties()
+ {
+ return templatePreprocessor.GetModelProperties();
+ }
+
+ AspxCSharp.List.ModelProperty GetFirstModelProperty()
+ {
+ return GetModelProperties().First();
+ }
+
[Test]
public void GetViewPageType_HostViewDataTypeNameIsMyAppMyModel_ReturnsMyAppMyModelSurroundedByAngleBrackets()
{
@@ -79,7 +92,7 @@ namespace AspNet.Mvc.Tests.CodeTemplates
<%: Html.ActionLink(""Create"", ""Create"") %>
- <% foreach (var item in Model) { %>
+ <% foreach (var item in Model) { %>
|
<%: Html.ActionLink(""Edit"", ""Edit"") %> |
@@ -87,7 +100,7 @@ namespace AspNet.Mvc.Tests.CodeTemplates
<%: Html.ActionLink(""Delete"", ""Delete"") %>
|
- <% } %>
+ <% } %>