Browse Source

Generate code for model properties in ASP.NET MVC Edit view T4 templates.

pull/18/head
Matt Ward 14 years ago
parent
commit
eefdc40e50
  1. 144
      src/AddIns/BackendBindings/AspNet.Mvc/Project/ItemTemplates/CSharp/CodeTemplates/AddView/AspxCSharp/Edit.cs
  2. 31
      src/AddIns/BackendBindings/AspNet.Mvc/Project/ItemTemplates/CSharp/CodeTemplates/AddView/AspxCSharp/Edit.tt
  3. 127
      src/AddIns/BackendBindings/AspNet.Mvc/Project/ItemTemplates/CSharp/CodeTemplates/AddView/CSHTML/Edit.cs
  4. 31
      src/AddIns/BackendBindings/AspNet.Mvc/Project/ItemTemplates/CSharp/CodeTemplates/AddView/CSHTML/Edit.tt
  5. 28
      src/AddIns/BackendBindings/AspNet.Mvc/Project/ItemTemplates/VisualBasic/CodeTemplates/AddView/AspxVisualBasic/Edit.tt
  6. 28
      src/AddIns/BackendBindings/AspNet.Mvc/Project/ItemTemplates/VisualBasic/CodeTemplates/AddView/VBHTML/Edit.tt
  7. 64
      src/AddIns/BackendBindings/AspNet.Mvc/Test/Src/CodeTemplates/AspxCSharpEditViewTemplateTests.cs
  8. 64
      src/AddIns/BackendBindings/AspNet.Mvc/Test/Src/CodeTemplates/RazorCSharpEditViewTemplateTests.cs

144
src/AddIns/BackendBindings/AspNet.Mvc/Project/ItemTemplates/CSharp/CodeTemplates/AddView/AspxCSharp/Edit.cs

@ -10,6 +10,8 @@
namespace ICSharpCode.AspNet.Mvc.AspxCSharp { namespace ICSharpCode.AspNet.Mvc.AspxCSharp {
using ICSharpCode.AspNet.Mvc; using ICSharpCode.AspNet.Mvc;
using System.Collections.Generic;
using System.Reflection;
using System; using System;
@ -18,12 +20,17 @@ namespace ICSharpCode.AspNet.Mvc.AspxCSharp {
private global::Microsoft.VisualStudio.TextTemplating.ITextTemplatingEngineHost hostValue; private global::Microsoft.VisualStudio.TextTemplating.ITextTemplatingEngineHost hostValue;
#line 57 "D:\projects\dotnet\SharpDevelop.AspNetMvc\src\AddIns\BackendBindings\AspNet.Mvc\Project\ItemTemplates\CSharp\CodeTemplates\AddView\AspxCSharp\Edit.tt" #line 69 "D:\projects\dotnet\SharpDevelop.AspNetMvc\src\AddIns\BackendBindings\AspNet.Mvc\Project\ItemTemplates\CSharp\CodeTemplates\AddView\AspxCSharp\Edit.tt"
MvcTextTemplateHost MvcHost { MvcTextTemplateHost MvcHost {
get { return (MvcTextTemplateHost)Host; } get { return (MvcTextTemplateHost)Host; }
} }
public class ModelProperty
{
public string Name { get; set; }
}
public string GetViewPageType() public string GetViewPageType()
{ {
string viewDataTypeName = MvcHost.ViewDataTypeName; string viewDataTypeName = MvcHost.ViewDataTypeName;
@ -32,6 +39,20 @@ namespace ICSharpCode.AspNet.Mvc.AspxCSharp {
} }
return String.Empty; return String.Empty;
} }
public IEnumerable<ModelProperty> GetModelProperties()
{
var properties = new List<ModelProperty>();
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 default
#line hidden #line hidden
@ -49,92 +70,92 @@ namespace ICSharpCode.AspNet.Mvc.AspxCSharp {
public virtual string TransformText() { public virtual string TransformText() {
this.GenerationEnvironment = null; this.GenerationEnvironment = null;
#line 3 "D:\projects\dotnet\SharpDevelop.AspNetMvc\src\AddIns\BackendBindings\AspNet.Mvc\Project\ItemTemplates\CSharp\CodeTemplates\AddView\AspxCSharp\Edit.tt" #line 5 "D:\projects\dotnet\SharpDevelop.AspNetMvc\src\AddIns\BackendBindings\AspNet.Mvc\Project\ItemTemplates\CSharp\CodeTemplates\AddView\AspxCSharp\Edit.tt"
if (MvcHost.IsPartialView) { if (MvcHost.IsPartialView) {
#line default #line default
#line hidden #line hidden
#line 4 "D:\projects\dotnet\SharpDevelop.AspNetMvc\src\AddIns\BackendBindings\AspNet.Mvc\Project\ItemTemplates\CSharp\CodeTemplates\AddView\AspxCSharp\Edit.tt" #line 6 "D:\projects\dotnet\SharpDevelop.AspNetMvc\src\AddIns\BackendBindings\AspNet.Mvc\Project\ItemTemplates\CSharp\CodeTemplates\AddView\AspxCSharp\Edit.tt"
this.Write("<%@ Control Language=\"C#\" Inherits=\"System.Web.Mvc.ViewUserControl"); this.Write("<%@ Control Language=\"C#\" Inherits=\"System.Web.Mvc.ViewUserControl");
#line default #line default
#line hidden #line hidden
#line 4 "D:\projects\dotnet\SharpDevelop.AspNetMvc\src\AddIns\BackendBindings\AspNet.Mvc\Project\ItemTemplates\CSharp\CodeTemplates\AddView\AspxCSharp\Edit.tt" #line 6 "D:\projects\dotnet\SharpDevelop.AspNetMvc\src\AddIns\BackendBindings\AspNet.Mvc\Project\ItemTemplates\CSharp\CodeTemplates\AddView\AspxCSharp\Edit.tt"
this.Write(this.ToStringHelper.ToStringWithCulture( GetViewPageType() )); this.Write(this.ToStringHelper.ToStringWithCulture( GetViewPageType() ));
#line default #line default
#line hidden #line hidden
#line 4 "D:\projects\dotnet\SharpDevelop.AspNetMvc\src\AddIns\BackendBindings\AspNet.Mvc\Project\ItemTemplates\CSharp\CodeTemplates\AddView\AspxCSharp\Edit.tt" #line 6 "D:\projects\dotnet\SharpDevelop.AspNetMvc\src\AddIns\BackendBindings\AspNet.Mvc\Project\ItemTemplates\CSharp\CodeTemplates\AddView\AspxCSharp\Edit.tt"
this.Write("\" %>\r\n\r\n"); this.Write("\" %>\r\n\r\n");
#line default #line default
#line hidden #line hidden
#line 6 "D:\projects\dotnet\SharpDevelop.AspNetMvc\src\AddIns\BackendBindings\AspNet.Mvc\Project\ItemTemplates\CSharp\CodeTemplates\AddView\AspxCSharp\Edit.tt" #line 8 "D:\projects\dotnet\SharpDevelop.AspNetMvc\src\AddIns\BackendBindings\AspNet.Mvc\Project\ItemTemplates\CSharp\CodeTemplates\AddView\AspxCSharp\Edit.tt"
} else if (MvcHost.IsContentPage) { } else if (MvcHost.IsContentPage) {
#line default #line default
#line hidden #line hidden
#line 7 "D:\projects\dotnet\SharpDevelop.AspNetMvc\src\AddIns\BackendBindings\AspNet.Mvc\Project\ItemTemplates\CSharp\CodeTemplates\AddView\AspxCSharp\Edit.tt" #line 9 "D:\projects\dotnet\SharpDevelop.AspNetMvc\src\AddIns\BackendBindings\AspNet.Mvc\Project\ItemTemplates\CSharp\CodeTemplates\AddView\AspxCSharp\Edit.tt"
this.Write("<%@ Page Language=\"C#\" MasterPageFile=\""); this.Write("<%@ Page Language=\"C#\" MasterPageFile=\"");
#line default #line default
#line hidden #line hidden
#line 7 "D:\projects\dotnet\SharpDevelop.AspNetMvc\src\AddIns\BackendBindings\AspNet.Mvc\Project\ItemTemplates\CSharp\CodeTemplates\AddView\AspxCSharp\Edit.tt" #line 9 "D:\projects\dotnet\SharpDevelop.AspNetMvc\src\AddIns\BackendBindings\AspNet.Mvc\Project\ItemTemplates\CSharp\CodeTemplates\AddView\AspxCSharp\Edit.tt"
this.Write(this.ToStringHelper.ToStringWithCulture( MvcHost.MasterPageFile )); this.Write(this.ToStringHelper.ToStringWithCulture( MvcHost.MasterPageFile ));
#line default #line default
#line hidden #line hidden
#line 7 "D:\projects\dotnet\SharpDevelop.AspNetMvc\src\AddIns\BackendBindings\AspNet.Mvc\Project\ItemTemplates\CSharp\CodeTemplates\AddView\AspxCSharp\Edit.tt" #line 9 "D:\projects\dotnet\SharpDevelop.AspNetMvc\src\AddIns\BackendBindings\AspNet.Mvc\Project\ItemTemplates\CSharp\CodeTemplates\AddView\AspxCSharp\Edit.tt"
this.Write("\" Inherits=\"System.Web.Mvc.ViewPage"); this.Write("\" Inherits=\"System.Web.Mvc.ViewPage");
#line default #line default
#line hidden #line hidden
#line 7 "D:\projects\dotnet\SharpDevelop.AspNetMvc\src\AddIns\BackendBindings\AspNet.Mvc\Project\ItemTemplates\CSharp\CodeTemplates\AddView\AspxCSharp\Edit.tt" #line 9 "D:\projects\dotnet\SharpDevelop.AspNetMvc\src\AddIns\BackendBindings\AspNet.Mvc\Project\ItemTemplates\CSharp\CodeTemplates\AddView\AspxCSharp\Edit.tt"
this.Write(this.ToStringHelper.ToStringWithCulture( GetViewPageType() )); this.Write(this.ToStringHelper.ToStringWithCulture( GetViewPageType() ));
#line default #line default
#line hidden #line hidden
#line 7 "D:\projects\dotnet\SharpDevelop.AspNetMvc\src\AddIns\BackendBindings\AspNet.Mvc\Project\ItemTemplates\CSharp\CodeTemplates\AddView\AspxCSharp\Edit.tt" #line 9 "D:\projects\dotnet\SharpDevelop.AspNetMvc\src\AddIns\BackendBindings\AspNet.Mvc\Project\ItemTemplates\CSharp\CodeTemplates\AddView\AspxCSharp\Edit.tt"
this.Write("\" %>\r\n\r\n<asp:Content ID=\"Content1\" ContentPlaceHolderID=\"Title\" runat=\"server\">\r\n" + this.Write("\" %>\r\n\r\n<asp:Content ID=\"Content1\" ContentPlaceHolderID=\"Title\" runat=\"server\">\r\n" +
""); "");
#line default #line default
#line hidden #line hidden
#line 10 "D:\projects\dotnet\SharpDevelop.AspNetMvc\src\AddIns\BackendBindings\AspNet.Mvc\Project\ItemTemplates\CSharp\CodeTemplates\AddView\AspxCSharp\Edit.tt" #line 12 "D:\projects\dotnet\SharpDevelop.AspNetMvc\src\AddIns\BackendBindings\AspNet.Mvc\Project\ItemTemplates\CSharp\CodeTemplates\AddView\AspxCSharp\Edit.tt"
this.Write(this.ToStringHelper.ToStringWithCulture( MvcHost.ViewName )); this.Write(this.ToStringHelper.ToStringWithCulture( MvcHost.ViewName ));
#line default #line default
#line hidden #line hidden
#line 10 "D:\projects\dotnet\SharpDevelop.AspNetMvc\src\AddIns\BackendBindings\AspNet.Mvc\Project\ItemTemplates\CSharp\CodeTemplates\AddView\AspxCSharp\Edit.tt" #line 12 "D:\projects\dotnet\SharpDevelop.AspNetMvc\src\AddIns\BackendBindings\AspNet.Mvc\Project\ItemTemplates\CSharp\CodeTemplates\AddView\AspxCSharp\Edit.tt"
this.Write("\r\n</asp:Content>\r\n\r\n<asp:Content ID=\"Content2\" ContentPlaceHolderID=\""); this.Write("\r\n</asp:Content>\r\n\r\n<asp:Content ID=\"Content2\" ContentPlaceHolderID=\"");
#line default #line default
#line hidden #line hidden
#line 13 "D:\projects\dotnet\SharpDevelop.AspNetMvc\src\AddIns\BackendBindings\AspNet.Mvc\Project\ItemTemplates\CSharp\CodeTemplates\AddView\AspxCSharp\Edit.tt" #line 15 "D:\projects\dotnet\SharpDevelop.AspNetMvc\src\AddIns\BackendBindings\AspNet.Mvc\Project\ItemTemplates\CSharp\CodeTemplates\AddView\AspxCSharp\Edit.tt"
this.Write(this.ToStringHelper.ToStringWithCulture( MvcHost.PrimaryContentPlaceHolderID )); this.Write(this.ToStringHelper.ToStringWithCulture( MvcHost.PrimaryContentPlaceHolderID ));
#line default #line default
#line hidden #line hidden
#line 13 "D:\projects\dotnet\SharpDevelop.AspNetMvc\src\AddIns\BackendBindings\AspNet.Mvc\Project\ItemTemplates\CSharp\CodeTemplates\AddView\AspxCSharp\Edit.tt" #line 15 "D:\projects\dotnet\SharpDevelop.AspNetMvc\src\AddIns\BackendBindings\AspNet.Mvc\Project\ItemTemplates\CSharp\CodeTemplates\AddView\AspxCSharp\Edit.tt"
this.Write("\" runat=\"server\">\r\n"); this.Write("\" runat=\"server\">\r\n");
#line default #line default
#line hidden #line hidden
#line 14 "D:\projects\dotnet\SharpDevelop.AspNetMvc\src\AddIns\BackendBindings\AspNet.Mvc\Project\ItemTemplates\CSharp\CodeTemplates\AddView\AspxCSharp\Edit.tt" #line 16 "D:\projects\dotnet\SharpDevelop.AspNetMvc\src\AddIns\BackendBindings\AspNet.Mvc\Project\ItemTemplates\CSharp\CodeTemplates\AddView\AspxCSharp\Edit.tt"
PushIndent("\t"); PushIndent("\t");
} else { } else {
@ -143,37 +164,37 @@ namespace ICSharpCode.AspNet.Mvc.AspxCSharp {
#line default #line default
#line hidden #line hidden
#line 18 "D:\projects\dotnet\SharpDevelop.AspNetMvc\src\AddIns\BackendBindings\AspNet.Mvc\Project\ItemTemplates\CSharp\CodeTemplates\AddView\AspxCSharp\Edit.tt" #line 20 "D:\projects\dotnet\SharpDevelop.AspNetMvc\src\AddIns\BackendBindings\AspNet.Mvc\Project\ItemTemplates\CSharp\CodeTemplates\AddView\AspxCSharp\Edit.tt"
this.Write("<%@ Page Language=\"C#\" Inherits=\"System.Web.Mvc.ViewPage"); this.Write("<%@ Page Language=\"C#\" Inherits=\"System.Web.Mvc.ViewPage");
#line default #line default
#line hidden #line hidden
#line 18 "D:\projects\dotnet\SharpDevelop.AspNetMvc\src\AddIns\BackendBindings\AspNet.Mvc\Project\ItemTemplates\CSharp\CodeTemplates\AddView\AspxCSharp\Edit.tt" #line 20 "D:\projects\dotnet\SharpDevelop.AspNetMvc\src\AddIns\BackendBindings\AspNet.Mvc\Project\ItemTemplates\CSharp\CodeTemplates\AddView\AspxCSharp\Edit.tt"
this.Write(this.ToStringHelper.ToStringWithCulture( GetViewPageType() )); this.Write(this.ToStringHelper.ToStringWithCulture( GetViewPageType() ));
#line default #line default
#line hidden #line hidden
#line 18 "D:\projects\dotnet\SharpDevelop.AspNetMvc\src\AddIns\BackendBindings\AspNet.Mvc\Project\ItemTemplates\CSharp\CodeTemplates\AddView\AspxCSharp\Edit.tt" #line 20 "D:\projects\dotnet\SharpDevelop.AspNetMvc\src\AddIns\BackendBindings\AspNet.Mvc\Project\ItemTemplates\CSharp\CodeTemplates\AddView\AspxCSharp\Edit.tt"
this.Write("\" %>\r\n\r\n<!DOCTYPE html>\r\n<html>\r\n\t<head runat=\"server\">\r\n\t\t<title>"); this.Write("\" %>\r\n\r\n<!DOCTYPE html>\r\n<html>\r\n\t<head runat=\"server\">\r\n\t\t<title>");
#line default #line default
#line hidden #line hidden
#line 23 "D:\projects\dotnet\SharpDevelop.AspNetMvc\src\AddIns\BackendBindings\AspNet.Mvc\Project\ItemTemplates\CSharp\CodeTemplates\AddView\AspxCSharp\Edit.tt" #line 25 "D:\projects\dotnet\SharpDevelop.AspNetMvc\src\AddIns\BackendBindings\AspNet.Mvc\Project\ItemTemplates\CSharp\CodeTemplates\AddView\AspxCSharp\Edit.tt"
this.Write(this.ToStringHelper.ToStringWithCulture( MvcHost.ViewName )); this.Write(this.ToStringHelper.ToStringWithCulture( MvcHost.ViewName ));
#line default #line default
#line hidden #line hidden
#line 23 "D:\projects\dotnet\SharpDevelop.AspNetMvc\src\AddIns\BackendBindings\AspNet.Mvc\Project\ItemTemplates\CSharp\CodeTemplates\AddView\AspxCSharp\Edit.tt" #line 25 "D:\projects\dotnet\SharpDevelop.AspNetMvc\src\AddIns\BackendBindings\AspNet.Mvc\Project\ItemTemplates\CSharp\CodeTemplates\AddView\AspxCSharp\Edit.tt"
this.Write("</title>\r\n\t</head>\r\n\t<body>\r\n"); this.Write("</title>\r\n\t</head>\r\n\t<body>\r\n");
#line default #line default
#line hidden #line hidden
#line 26 "D:\projects\dotnet\SharpDevelop.AspNetMvc\src\AddIns\BackendBindings\AspNet.Mvc\Project\ItemTemplates\CSharp\CodeTemplates\AddView\AspxCSharp\Edit.tt" #line 28 "D:\projects\dotnet\SharpDevelop.AspNetMvc\src\AddIns\BackendBindings\AspNet.Mvc\Project\ItemTemplates\CSharp\CodeTemplates\AddView\AspxCSharp\Edit.tt"
PushIndent("\t\t"); PushIndent("\t\t");
} }
@ -182,27 +203,88 @@ namespace ICSharpCode.AspNet.Mvc.AspxCSharp {
#line default #line default
#line hidden #line hidden
#line 30 "D:\projects\dotnet\SharpDevelop.AspNetMvc\src\AddIns\BackendBindings\AspNet.Mvc\Project\ItemTemplates\CSharp\CodeTemplates\AddView\AspxCSharp\Edit.tt" #line 32 "D:\projects\dotnet\SharpDevelop.AspNetMvc\src\AddIns\BackendBindings\AspNet.Mvc\Project\ItemTemplates\CSharp\CodeTemplates\AddView\AspxCSharp\Edit.tt"
this.Write("<% using (Html.BeginForm()) { %>\r\n\t<%: Html.ValidationSummary(true) %>\r\n\t<fieldse" + this.Write("<% using (Html.BeginForm()) { %>\r\n\t<%: Html.ValidationSummary(true) %>\r\n\t<fieldse" +
"t>\r\n\t\t<legend>"); "t>\r\n\t\t<legend>");
#line default #line default
#line hidden #line hidden
#line 33 "D:\projects\dotnet\SharpDevelop.AspNetMvc\src\AddIns\BackendBindings\AspNet.Mvc\Project\ItemTemplates\CSharp\CodeTemplates\AddView\AspxCSharp\Edit.tt" #line 35 "D:\projects\dotnet\SharpDevelop.AspNetMvc\src\AddIns\BackendBindings\AspNet.Mvc\Project\ItemTemplates\CSharp\CodeTemplates\AddView\AspxCSharp\Edit.tt"
this.Write(this.ToStringHelper.ToStringWithCulture( MvcHost.ViewDataType.Name )); this.Write(this.ToStringHelper.ToStringWithCulture( MvcHost.ViewDataType.Name ));
#line default #line default
#line hidden #line hidden
#line 33 "D:\projects\dotnet\SharpDevelop.AspNetMvc\src\AddIns\BackendBindings\AspNet.Mvc\Project\ItemTemplates\CSharp\CodeTemplates\AddView\AspxCSharp\Edit.tt" #line 35 "D:\projects\dotnet\SharpDevelop.AspNetMvc\src\AddIns\BackendBindings\AspNet.Mvc\Project\ItemTemplates\CSharp\CodeTemplates\AddView\AspxCSharp\Edit.tt"
this.Write("</legend>\r\n\t\t\r\n\t\t<p>\r\n\t\t\t<input type=\"submit\" value=\"Save\"/>\r\n\t\t</p>\r\n\t</fieldset" + this.Write("</legend>\r\n");
">\r\n<% } %>\r\n<div>\r\n\t<%: Html.ActionLink(\"Back\", \"Index\") %>\r\n</div>\r\n");
#line default
#line hidden
#line 36 "D:\projects\dotnet\SharpDevelop.AspNetMvc\src\AddIns\BackendBindings\AspNet.Mvc\Project\ItemTemplates\CSharp\CodeTemplates\AddView\AspxCSharp\Edit.tt"
foreach (ModelProperty modelProperty in GetModelProperties()) {
#line default
#line hidden
#line 37 "D:\projects\dotnet\SharpDevelop.AspNetMvc\src\AddIns\BackendBindings\AspNet.Mvc\Project\ItemTemplates\CSharp\CodeTemplates\AddView\AspxCSharp\Edit.tt"
this.Write("\t\t\r\n\t\t<div class=\"editor-label\">\r\n\t\t\t<%: Html.LabelFor(model => model.");
#line default
#line hidden
#line 39 "D:\projects\dotnet\SharpDevelop.AspNetMvc\src\AddIns\BackendBindings\AspNet.Mvc\Project\ItemTemplates\CSharp\CodeTemplates\AddView\AspxCSharp\Edit.tt"
this.Write(this.ToStringHelper.ToStringWithCulture( modelProperty.Name));
#line default
#line hidden
#line 39 "D:\projects\dotnet\SharpDevelop.AspNetMvc\src\AddIns\BackendBindings\AspNet.Mvc\Project\ItemTemplates\CSharp\CodeTemplates\AddView\AspxCSharp\Edit.tt"
this.Write(") %>\r\n\t\t</div>\r\n\t\t<div class=\"editor-field\">\r\n\t\t\t<%: Html.EditorFor(model => mode" +
"l.");
#line default
#line hidden
#line 42 "D:\projects\dotnet\SharpDevelop.AspNetMvc\src\AddIns\BackendBindings\AspNet.Mvc\Project\ItemTemplates\CSharp\CodeTemplates\AddView\AspxCSharp\Edit.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\Edit.tt"
this.Write(") %>\r\n\t\t\t<%: Html.ValidationMessageFor(model => model.");
#line default
#line hidden
#line 43 "D:\projects\dotnet\SharpDevelop.AspNetMvc\src\AddIns\BackendBindings\AspNet.Mvc\Project\ItemTemplates\CSharp\CodeTemplates\AddView\AspxCSharp\Edit.tt"
this.Write(this.ToStringHelper.ToStringWithCulture( modelProperty.Name));
#line default #line default
#line hidden #line hidden
#line 43 "D:\projects\dotnet\SharpDevelop.AspNetMvc\src\AddIns\BackendBindings\AspNet.Mvc\Project\ItemTemplates\CSharp\CodeTemplates\AddView\AspxCSharp\Edit.tt" #line 43 "D:\projects\dotnet\SharpDevelop.AspNetMvc\src\AddIns\BackendBindings\AspNet.Mvc\Project\ItemTemplates\CSharp\CodeTemplates\AddView\AspxCSharp\Edit.tt"
this.Write(") %>\r\n\t\t</div>\r\n");
#line default
#line hidden
#line 45 "D:\projects\dotnet\SharpDevelop.AspNetMvc\src\AddIns\BackendBindings\AspNet.Mvc\Project\ItemTemplates\CSharp\CodeTemplates\AddView\AspxCSharp\Edit.tt"
}
#line default
#line hidden
#line 46 "D:\projects\dotnet\SharpDevelop.AspNetMvc\src\AddIns\BackendBindings\AspNet.Mvc\Project\ItemTemplates\CSharp\CodeTemplates\AddView\AspxCSharp\Edit.tt"
this.Write("\t\t\r\n\t\t<p>\r\n\t\t\t<input type=\"submit\" value=\"Save\"/>\r\n\t\t</p>\r\n\t</fieldset>\r\n<% } %>\r" +
"\n<div>\r\n\t<%: Html.ActionLink(\"Back\", \"Index\") %>\r\n</div>\r\n");
#line default
#line hidden
#line 55 "D:\projects\dotnet\SharpDevelop.AspNetMvc\src\AddIns\BackendBindings\AspNet.Mvc\Project\ItemTemplates\CSharp\CodeTemplates\AddView\AspxCSharp\Edit.tt"
if (MvcHost.IsPartialView) { if (MvcHost.IsPartialView) {
// Do nothing. // Do nothing.
@ -213,13 +295,13 @@ namespace ICSharpCode.AspNet.Mvc.AspxCSharp {
#line default #line default
#line hidden #line hidden
#line 49 "D:\projects\dotnet\SharpDevelop.AspNetMvc\src\AddIns\BackendBindings\AspNet.Mvc\Project\ItemTemplates\CSharp\CodeTemplates\AddView\AspxCSharp\Edit.tt" #line 61 "D:\projects\dotnet\SharpDevelop.AspNetMvc\src\AddIns\BackendBindings\AspNet.Mvc\Project\ItemTemplates\CSharp\CodeTemplates\AddView\AspxCSharp\Edit.tt"
this.Write("</asp:Content>\r\n"); this.Write("</asp:Content>\r\n");
#line default #line default
#line hidden #line hidden
#line 50 "D:\projects\dotnet\SharpDevelop.AspNetMvc\src\AddIns\BackendBindings\AspNet.Mvc\Project\ItemTemplates\CSharp\CodeTemplates\AddView\AspxCSharp\Edit.tt" #line 62 "D:\projects\dotnet\SharpDevelop.AspNetMvc\src\AddIns\BackendBindings\AspNet.Mvc\Project\ItemTemplates\CSharp\CodeTemplates\AddView\AspxCSharp\Edit.tt"
} else { } else {
PopIndent(); PopIndent();
@ -228,13 +310,13 @@ namespace ICSharpCode.AspNet.Mvc.AspxCSharp {
#line default #line default
#line hidden #line hidden
#line 54 "D:\projects\dotnet\SharpDevelop.AspNetMvc\src\AddIns\BackendBindings\AspNet.Mvc\Project\ItemTemplates\CSharp\CodeTemplates\AddView\AspxCSharp\Edit.tt" #line 66 "D:\projects\dotnet\SharpDevelop.AspNetMvc\src\AddIns\BackendBindings\AspNet.Mvc\Project\ItemTemplates\CSharp\CodeTemplates\AddView\AspxCSharp\Edit.tt"
this.Write("\t</body>\r\n</html>\r\n"); this.Write("\t</body>\r\n</html>\r\n");
#line default #line default
#line hidden #line hidden
#line 56 "D:\projects\dotnet\SharpDevelop.AspNetMvc\src\AddIns\BackendBindings\AspNet.Mvc\Project\ItemTemplates\CSharp\CodeTemplates\AddView\AspxCSharp\Edit.tt" #line 68 "D:\projects\dotnet\SharpDevelop.AspNetMvc\src\AddIns\BackendBindings\AspNet.Mvc\Project\ItemTemplates\CSharp\CodeTemplates\AddView\AspxCSharp\Edit.tt"
} }
#line default #line default

31
src/AddIns/BackendBindings/AspNet.Mvc/Project/ItemTemplates/CSharp/CodeTemplates/AddView/AspxCSharp/Edit.tt

@ -1,5 +1,7 @@
<#@ template language="C#" HostSpecific="true" #> <#@ template language="C#" HostSpecific="true" #>
<#@ import namespace="ICSharpCode.AspNet.Mvc" #> <#@ import namespace="ICSharpCode.AspNet.Mvc" #>
<#@ import namespace="System.Collections.Generic" #>
<#@ import namespace="System.Reflection" #>
<# if (MvcHost.IsPartialView) { #> <# if (MvcHost.IsPartialView) { #>
<%@ Control Language="C#" Inherits="System.Web.Mvc.ViewUserControl<#= GetViewPageType() #>" %> <%@ Control Language="C#" Inherits="System.Web.Mvc.ViewUserControl<#= GetViewPageType() #>" %>
@ -31,6 +33,16 @@
<%: Html.ValidationSummary(true) %> <%: Html.ValidationSummary(true) %>
<fieldset> <fieldset>
<legend><#= MvcHost.ViewDataType.Name #></legend> <legend><#= MvcHost.ViewDataType.Name #></legend>
<# foreach (ModelProperty modelProperty in GetModelProperties()) { #>
<div class="editor-label">
<%: Html.LabelFor(model => model.<#= modelProperty.Name#>) %>
</div>
<div class="editor-field">
<%: Html.EditorFor(model => model.<#= modelProperty.Name#>) %>
<%: Html.ValidationMessageFor(model => model.<#= modelProperty.Name#>) %>
</div>
<# } #>
<p> <p>
<input type="submit" value="Save"/> <input type="submit" value="Save"/>
@ -59,6 +71,11 @@
get { return (MvcTextTemplateHost)Host; } get { return (MvcTextTemplateHost)Host; }
} }
public class ModelProperty
{
public string Name { get; set; }
}
public string GetViewPageType() public string GetViewPageType()
{ {
string viewDataTypeName = MvcHost.ViewDataTypeName; string viewDataTypeName = MvcHost.ViewDataTypeName;
@ -67,4 +84,18 @@
} }
return String.Empty; return String.Empty;
} }
public IEnumerable<ModelProperty> GetModelProperties()
{
var properties = new List<ModelProperty>();
foreach (PropertyInfo propertyInfo in MvcHost.GetViewDataTypeProperties()) {
properties.Add(CreateModelProperty(propertyInfo));
}
return properties;
}
ModelProperty CreateModelProperty(PropertyInfo propertyInfo)
{
return new ModelProperty() { Name = propertyInfo.Name };
}
#> #>

127
src/AddIns/BackendBindings/AspNet.Mvc/Project/ItemTemplates/CSharp/CodeTemplates/AddView/CSHTML/Edit.cs

@ -10,6 +10,8 @@
namespace ICSharpCode.AspNet.Mvc.CSHtml { namespace ICSharpCode.AspNet.Mvc.CSHtml {
using ICSharpCode.AspNet.Mvc; using ICSharpCode.AspNet.Mvc;
using System.Collections.Generic;
using System.Reflection;
using System; using System;
@ -18,12 +20,17 @@ namespace ICSharpCode.AspNet.Mvc.CSHtml {
private global::Microsoft.VisualStudio.TextTemplating.ITextTemplatingEngineHost hostValue; private global::Microsoft.VisualStudio.TextTemplating.ITextTemplatingEngineHost hostValue;
#line 53 "D:\projects\dotnet\SharpDevelop.AspNetMvc\src\AddIns\BackendBindings\AspNet.Mvc\Project\ItemTemplates\CSharp\CodeTemplates\AddView\CSHTML\Edit.tt" #line 65 "D:\projects\dotnet\SharpDevelop.AspNetMvc\src\AddIns\BackendBindings\AspNet.Mvc\Project\ItemTemplates\CSharp\CodeTemplates\AddView\CSHTML\Edit.tt"
MvcTextTemplateHost MvcHost { MvcTextTemplateHost MvcHost {
get { return (MvcTextTemplateHost)Host; } get { return (MvcTextTemplateHost)Host; }
} }
public class ModelProperty
{
public string Name { get; set; }
}
public string GetModelDirective() public string GetModelDirective()
{ {
string viewDataTypeName = MvcHost.ViewDataTypeName; string viewDataTypeName = MvcHost.ViewDataTypeName;
@ -32,6 +39,20 @@ namespace ICSharpCode.AspNet.Mvc.CSHtml {
} }
return String.Empty; return String.Empty;
} }
public IEnumerable<ModelProperty> GetModelProperties()
{
var properties = new List<ModelProperty>();
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 default
#line hidden #line hidden
@ -49,19 +70,19 @@ namespace ICSharpCode.AspNet.Mvc.CSHtml {
public virtual string TransformText() { public virtual string TransformText() {
this.GenerationEnvironment = null; this.GenerationEnvironment = null;
#line 4 "D:\projects\dotnet\SharpDevelop.AspNetMvc\src\AddIns\BackendBindings\AspNet.Mvc\Project\ItemTemplates\CSharp\CodeTemplates\AddView\CSHTML\Edit.tt" #line 6 "D:\projects\dotnet\SharpDevelop.AspNetMvc\src\AddIns\BackendBindings\AspNet.Mvc\Project\ItemTemplates\CSharp\CodeTemplates\AddView\CSHTML\Edit.tt"
this.Write(this.ToStringHelper.ToStringWithCulture( GetModelDirective() )); this.Write(this.ToStringHelper.ToStringWithCulture( GetModelDirective() ));
#line default #line default
#line hidden #line hidden
#line 4 "D:\projects\dotnet\SharpDevelop.AspNetMvc\src\AddIns\BackendBindings\AspNet.Mvc\Project\ItemTemplates\CSharp\CodeTemplates\AddView\CSHTML\Edit.tt" #line 6 "D:\projects\dotnet\SharpDevelop.AspNetMvc\src\AddIns\BackendBindings\AspNet.Mvc\Project\ItemTemplates\CSharp\CodeTemplates\AddView\CSHTML\Edit.tt"
this.Write("\r\n\r\n"); this.Write("\r\n\r\n");
#line default #line default
#line hidden #line hidden
#line 6 "D:\projects\dotnet\SharpDevelop.AspNetMvc\src\AddIns\BackendBindings\AspNet.Mvc\Project\ItemTemplates\CSharp\CodeTemplates\AddView\CSHTML\Edit.tt" #line 8 "D:\projects\dotnet\SharpDevelop.AspNetMvc\src\AddIns\BackendBindings\AspNet.Mvc\Project\ItemTemplates\CSharp\CodeTemplates\AddView\CSHTML\Edit.tt"
if (MvcHost.IsPartialView) { if (MvcHost.IsPartialView) {
// Do nothing. // Do nothing.
@ -71,49 +92,49 @@ namespace ICSharpCode.AspNet.Mvc.CSHtml {
#line default #line default
#line hidden #line hidden
#line 11 "D:\projects\dotnet\SharpDevelop.AspNetMvc\src\AddIns\BackendBindings\AspNet.Mvc\Project\ItemTemplates\CSharp\CodeTemplates\AddView\CSHTML\Edit.tt" #line 13 "D:\projects\dotnet\SharpDevelop.AspNetMvc\src\AddIns\BackendBindings\AspNet.Mvc\Project\ItemTemplates\CSharp\CodeTemplates\AddView\CSHTML\Edit.tt"
this.Write("@{\r\n\tViewBag.Title = \""); this.Write("@{\r\n\tViewBag.Title = \"");
#line default #line default
#line hidden #line hidden
#line 12 "D:\projects\dotnet\SharpDevelop.AspNetMvc\src\AddIns\BackendBindings\AspNet.Mvc\Project\ItemTemplates\CSharp\CodeTemplates\AddView\CSHTML\Edit.tt" #line 14 "D:\projects\dotnet\SharpDevelop.AspNetMvc\src\AddIns\BackendBindings\AspNet.Mvc\Project\ItemTemplates\CSharp\CodeTemplates\AddView\CSHTML\Edit.tt"
this.Write(this.ToStringHelper.ToStringWithCulture( MvcHost.ViewName )); this.Write(this.ToStringHelper.ToStringWithCulture( MvcHost.ViewName ));
#line default #line default
#line hidden #line hidden
#line 12 "D:\projects\dotnet\SharpDevelop.AspNetMvc\src\AddIns\BackendBindings\AspNet.Mvc\Project\ItemTemplates\CSharp\CodeTemplates\AddView\CSHTML\Edit.tt" #line 14 "D:\projects\dotnet\SharpDevelop.AspNetMvc\src\AddIns\BackendBindings\AspNet.Mvc\Project\ItemTemplates\CSharp\CodeTemplates\AddView\CSHTML\Edit.tt"
this.Write("\";\r\n\tLayout = \""); this.Write("\";\r\n\tLayout = \"");
#line default #line default
#line hidden #line hidden
#line 13 "D:\projects\dotnet\SharpDevelop.AspNetMvc\src\AddIns\BackendBindings\AspNet.Mvc\Project\ItemTemplates\CSharp\CodeTemplates\AddView\CSHTML\Edit.tt" #line 15 "D:\projects\dotnet\SharpDevelop.AspNetMvc\src\AddIns\BackendBindings\AspNet.Mvc\Project\ItemTemplates\CSharp\CodeTemplates\AddView\CSHTML\Edit.tt"
this.Write(this.ToStringHelper.ToStringWithCulture( MvcHost.MasterPageFile )); this.Write(this.ToStringHelper.ToStringWithCulture( MvcHost.MasterPageFile ));
#line default #line default
#line hidden #line hidden
#line 13 "D:\projects\dotnet\SharpDevelop.AspNetMvc\src\AddIns\BackendBindings\AspNet.Mvc\Project\ItemTemplates\CSharp\CodeTemplates\AddView\CSHTML\Edit.tt" #line 15 "D:\projects\dotnet\SharpDevelop.AspNetMvc\src\AddIns\BackendBindings\AspNet.Mvc\Project\ItemTemplates\CSharp\CodeTemplates\AddView\CSHTML\Edit.tt"
this.Write("\";\r\n}\r\n\r\n<h2>"); this.Write("\";\r\n}\r\n\r\n<h2>");
#line default #line default
#line hidden #line hidden
#line 16 "D:\projects\dotnet\SharpDevelop.AspNetMvc\src\AddIns\BackendBindings\AspNet.Mvc\Project\ItemTemplates\CSharp\CodeTemplates\AddView\CSHTML\Edit.tt" #line 18 "D:\projects\dotnet\SharpDevelop.AspNetMvc\src\AddIns\BackendBindings\AspNet.Mvc\Project\ItemTemplates\CSharp\CodeTemplates\AddView\CSHTML\Edit.tt"
this.Write(this.ToStringHelper.ToStringWithCulture( MvcHost.ViewName )); this.Write(this.ToStringHelper.ToStringWithCulture( MvcHost.ViewName ));
#line default #line default
#line hidden #line hidden
#line 16 "D:\projects\dotnet\SharpDevelop.AspNetMvc\src\AddIns\BackendBindings\AspNet.Mvc\Project\ItemTemplates\CSharp\CodeTemplates\AddView\CSHTML\Edit.tt" #line 18 "D:\projects\dotnet\SharpDevelop.AspNetMvc\src\AddIns\BackendBindings\AspNet.Mvc\Project\ItemTemplates\CSharp\CodeTemplates\AddView\CSHTML\Edit.tt"
this.Write("</h2>\r\n\r\n"); this.Write("</h2>\r\n\r\n");
#line default #line default
#line hidden #line hidden
#line 18 "D:\projects\dotnet\SharpDevelop.AspNetMvc\src\AddIns\BackendBindings\AspNet.Mvc\Project\ItemTemplates\CSharp\CodeTemplates\AddView\CSHTML\Edit.tt" #line 20 "D:\projects\dotnet\SharpDevelop.AspNetMvc\src\AddIns\BackendBindings\AspNet.Mvc\Project\ItemTemplates\CSharp\CodeTemplates\AddView\CSHTML\Edit.tt"
} else { } else {
@ -121,25 +142,25 @@ namespace ICSharpCode.AspNet.Mvc.CSHtml {
#line default #line default
#line hidden #line hidden
#line 21 "D:\projects\dotnet\SharpDevelop.AspNetMvc\src\AddIns\BackendBindings\AspNet.Mvc\Project\ItemTemplates\CSharp\CodeTemplates\AddView\CSHTML\Edit.tt" #line 23 "D:\projects\dotnet\SharpDevelop.AspNetMvc\src\AddIns\BackendBindings\AspNet.Mvc\Project\ItemTemplates\CSharp\CodeTemplates\AddView\CSHTML\Edit.tt"
this.Write("<!DOCTYPE html>\r\n<html>\r\n\t<head runat=\"server\">\r\n\t\t<title>"); this.Write("<!DOCTYPE html>\r\n<html>\r\n\t<head runat=\"server\">\r\n\t\t<title>");
#line default #line default
#line hidden #line hidden
#line 24 "D:\projects\dotnet\SharpDevelop.AspNetMvc\src\AddIns\BackendBindings\AspNet.Mvc\Project\ItemTemplates\CSharp\CodeTemplates\AddView\CSHTML\Edit.tt" #line 26 "D:\projects\dotnet\SharpDevelop.AspNetMvc\src\AddIns\BackendBindings\AspNet.Mvc\Project\ItemTemplates\CSharp\CodeTemplates\AddView\CSHTML\Edit.tt"
this.Write(this.ToStringHelper.ToStringWithCulture( MvcHost.ViewName )); this.Write(this.ToStringHelper.ToStringWithCulture( MvcHost.ViewName ));
#line default #line default
#line hidden #line hidden
#line 24 "D:\projects\dotnet\SharpDevelop.AspNetMvc\src\AddIns\BackendBindings\AspNet.Mvc\Project\ItemTemplates\CSharp\CodeTemplates\AddView\CSHTML\Edit.tt" #line 26 "D:\projects\dotnet\SharpDevelop.AspNetMvc\src\AddIns\BackendBindings\AspNet.Mvc\Project\ItemTemplates\CSharp\CodeTemplates\AddView\CSHTML\Edit.tt"
this.Write("</title>\r\n\t</head>\r\n\t<body>\r\n"); this.Write("</title>\r\n\t</head>\r\n\t<body>\r\n");
#line default #line default
#line hidden #line hidden
#line 27 "D:\projects\dotnet\SharpDevelop.AspNetMvc\src\AddIns\BackendBindings\AspNet.Mvc\Project\ItemTemplates\CSharp\CodeTemplates\AddView\CSHTML\Edit.tt" #line 29 "D:\projects\dotnet\SharpDevelop.AspNetMvc\src\AddIns\BackendBindings\AspNet.Mvc\Project\ItemTemplates\CSharp\CodeTemplates\AddView\CSHTML\Edit.tt"
PushIndent("\t\t"); PushIndent("\t\t");
} }
@ -148,27 +169,87 @@ namespace ICSharpCode.AspNet.Mvc.CSHtml {
#line default #line default
#line hidden #line hidden
#line 31 "D:\projects\dotnet\SharpDevelop.AspNetMvc\src\AddIns\BackendBindings\AspNet.Mvc\Project\ItemTemplates\CSharp\CodeTemplates\AddView\CSHTML\Edit.tt" #line 33 "D:\projects\dotnet\SharpDevelop.AspNetMvc\src\AddIns\BackendBindings\AspNet.Mvc\Project\ItemTemplates\CSharp\CodeTemplates\AddView\CSHTML\Edit.tt"
this.Write("@using (Html.BeginForm()) {\r\n\t@Html.ValidationSummary(true)\r\n\t<fieldset>\r\n\t\t<lege" + this.Write("@using (Html.BeginForm()) {\r\n\t@Html.ValidationSummary(true)\r\n\t<fieldset>\r\n\t\t<lege" +
"nd>"); "nd>");
#line default #line default
#line hidden #line hidden
#line 34 "D:\projects\dotnet\SharpDevelop.AspNetMvc\src\AddIns\BackendBindings\AspNet.Mvc\Project\ItemTemplates\CSharp\CodeTemplates\AddView\CSHTML\Edit.tt" #line 36 "D:\projects\dotnet\SharpDevelop.AspNetMvc\src\AddIns\BackendBindings\AspNet.Mvc\Project\ItemTemplates\CSharp\CodeTemplates\AddView\CSHTML\Edit.tt"
this.Write(this.ToStringHelper.ToStringWithCulture( MvcHost.ViewDataType.Name )); this.Write(this.ToStringHelper.ToStringWithCulture( MvcHost.ViewDataType.Name ));
#line default #line default
#line hidden #line hidden
#line 34 "D:\projects\dotnet\SharpDevelop.AspNetMvc\src\AddIns\BackendBindings\AspNet.Mvc\Project\ItemTemplates\CSharp\CodeTemplates\AddView\CSHTML\Edit.tt" #line 36 "D:\projects\dotnet\SharpDevelop.AspNetMvc\src\AddIns\BackendBindings\AspNet.Mvc\Project\ItemTemplates\CSharp\CodeTemplates\AddView\CSHTML\Edit.tt"
this.Write("</legend>\r\n\t\t\r\n\t\t<p>\r\n\t\t\t<input type=\"submit\" value=\"Save\"/>\r\n\t\t</p>\r\n\t</fieldset" + this.Write("</legend>\r\n");
">\r\n}\r\n<div>\r\n\t@Html.ActionLink(\"Back\", \"Index\")\r\n</div>\r\n");
#line default
#line hidden
#line 37 "D:\projects\dotnet\SharpDevelop.AspNetMvc\src\AddIns\BackendBindings\AspNet.Mvc\Project\ItemTemplates\CSharp\CodeTemplates\AddView\CSHTML\Edit.tt"
foreach (ModelProperty modelProperty in GetModelProperties()) {
#line default
#line hidden
#line 38 "D:\projects\dotnet\SharpDevelop.AspNetMvc\src\AddIns\BackendBindings\AspNet.Mvc\Project\ItemTemplates\CSharp\CodeTemplates\AddView\CSHTML\Edit.tt"
this.Write("\t\t\r\n\t\t<div class=\"editor-label\">\r\n\t\t\t@Html.LabelFor(model => model.");
#line default
#line hidden
#line 40 "D:\projects\dotnet\SharpDevelop.AspNetMvc\src\AddIns\BackendBindings\AspNet.Mvc\Project\ItemTemplates\CSharp\CodeTemplates\AddView\CSHTML\Edit.tt"
this.Write(this.ToStringHelper.ToStringWithCulture( modelProperty.Name ));
#line default
#line hidden
#line 40 "D:\projects\dotnet\SharpDevelop.AspNetMvc\src\AddIns\BackendBindings\AspNet.Mvc\Project\ItemTemplates\CSharp\CodeTemplates\AddView\CSHTML\Edit.tt"
this.Write(")\r\n\t\t</div>\r\n\t\t<div class=\"editor-field\">\r\n\t\t\t@Html.EditorFor(model => model.");
#line default
#line hidden
#line 43 "D:\projects\dotnet\SharpDevelop.AspNetMvc\src\AddIns\BackendBindings\AspNet.Mvc\Project\ItemTemplates\CSharp\CodeTemplates\AddView\CSHTML\Edit.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\Edit.tt"
this.Write(")\r\n\t\t\t@Html.ValidationMessageFor(model => model.");
#line default
#line hidden
#line 44 "D:\projects\dotnet\SharpDevelop.AspNetMvc\src\AddIns\BackendBindings\AspNet.Mvc\Project\ItemTemplates\CSharp\CodeTemplates\AddView\CSHTML\Edit.tt"
this.Write(this.ToStringHelper.ToStringWithCulture( modelProperty.Name ));
#line default #line default
#line hidden #line hidden
#line 44 "D:\projects\dotnet\SharpDevelop.AspNetMvc\src\AddIns\BackendBindings\AspNet.Mvc\Project\ItemTemplates\CSharp\CodeTemplates\AddView\CSHTML\Edit.tt" #line 44 "D:\projects\dotnet\SharpDevelop.AspNetMvc\src\AddIns\BackendBindings\AspNet.Mvc\Project\ItemTemplates\CSharp\CodeTemplates\AddView\CSHTML\Edit.tt"
this.Write(")\r\n\t\t</div>\r\n");
#line default
#line hidden
#line 46 "D:\projects\dotnet\SharpDevelop.AspNetMvc\src\AddIns\BackendBindings\AspNet.Mvc\Project\ItemTemplates\CSharp\CodeTemplates\AddView\CSHTML\Edit.tt"
}
#line default
#line hidden
#line 47 "D:\projects\dotnet\SharpDevelop.AspNetMvc\src\AddIns\BackendBindings\AspNet.Mvc\Project\ItemTemplates\CSharp\CodeTemplates\AddView\CSHTML\Edit.tt"
this.Write("\t\t\r\n\t\t<p>\r\n\t\t\t<input type=\"submit\" value=\"Save\"/>\r\n\t\t</p>\r\n\t</fieldset>\r\n}\r\n<div>" +
"\r\n\t@Html.ActionLink(\"Back\", \"Index\")\r\n</div>\r\n");
#line default
#line hidden
#line 56 "D:\projects\dotnet\SharpDevelop.AspNetMvc\src\AddIns\BackendBindings\AspNet.Mvc\Project\ItemTemplates\CSharp\CodeTemplates\AddView\CSHTML\Edit.tt"
if (MvcHost.IsPartialView) { if (MvcHost.IsPartialView) {
// Do nothing. // Do nothing.
@ -179,13 +260,13 @@ namespace ICSharpCode.AspNet.Mvc.CSHtml {
#line default #line default
#line hidden #line hidden
#line 50 "D:\projects\dotnet\SharpDevelop.AspNetMvc\src\AddIns\BackendBindings\AspNet.Mvc\Project\ItemTemplates\CSharp\CodeTemplates\AddView\CSHTML\Edit.tt" #line 62 "D:\projects\dotnet\SharpDevelop.AspNetMvc\src\AddIns\BackendBindings\AspNet.Mvc\Project\ItemTemplates\CSharp\CodeTemplates\AddView\CSHTML\Edit.tt"
this.Write("\t</body>\r\n</html>\r\n"); this.Write("\t</body>\r\n</html>\r\n");
#line default #line default
#line hidden #line hidden
#line 52 "D:\projects\dotnet\SharpDevelop.AspNetMvc\src\AddIns\BackendBindings\AspNet.Mvc\Project\ItemTemplates\CSharp\CodeTemplates\AddView\CSHTML\Edit.tt" #line 64 "D:\projects\dotnet\SharpDevelop.AspNetMvc\src\AddIns\BackendBindings\AspNet.Mvc\Project\ItemTemplates\CSharp\CodeTemplates\AddView\CSHTML\Edit.tt"
} }
#line default #line default

31
src/AddIns/BackendBindings/AspNet.Mvc/Project/ItemTemplates/CSharp/CodeTemplates/AddView/CSHTML/Edit.tt

@ -1,5 +1,7 @@
<#@ template language="C#" HostSpecific="true" #> <#@ template language="C#" HostSpecific="true" #>
<#@ import namespace="ICSharpCode.AspNet.Mvc" #> <#@ import namespace="ICSharpCode.AspNet.Mvc" #>
<#@ import namespace="System.Collections.Generic" #>
<#@ import namespace="System.Reflection" #>
<#@ output extension=".cshtml" #> <#@ output extension=".cshtml" #>
<#= GetModelDirective() #> <#= GetModelDirective() #>
@ -32,6 +34,16 @@
@Html.ValidationSummary(true) @Html.ValidationSummary(true)
<fieldset> <fieldset>
<legend><#= MvcHost.ViewDataType.Name #></legend> <legend><#= MvcHost.ViewDataType.Name #></legend>
<# foreach (ModelProperty modelProperty in GetModelProperties()) { #>
<div class="editor-label">
@Html.LabelFor(model => model.<#= modelProperty.Name #>)
</div>
<div class="editor-field">
@Html.EditorFor(model => model.<#= modelProperty.Name #>)
@Html.ValidationMessageFor(model => model.<#= modelProperty.Name #>)
</div>
<# } #>
<p> <p>
<input type="submit" value="Save"/> <input type="submit" value="Save"/>
@ -55,6 +67,11 @@
get { return (MvcTextTemplateHost)Host; } get { return (MvcTextTemplateHost)Host; }
} }
public class ModelProperty
{
public string Name { get; set; }
}
public string GetModelDirective() public string GetModelDirective()
{ {
string viewDataTypeName = MvcHost.ViewDataTypeName; string viewDataTypeName = MvcHost.ViewDataTypeName;
@ -63,4 +80,18 @@
} }
return String.Empty; return String.Empty;
} }
public IEnumerable<ModelProperty> GetModelProperties()
{
var properties = new List<ModelProperty>();
foreach (PropertyInfo propertyInfo in MvcHost.GetViewDataTypeProperties()) {
properties.Add(CreateModelProperty(propertyInfo));
}
return properties;
}
ModelProperty CreateModelProperty(PropertyInfo propertyInfo)
{
return new ModelProperty() { Name = propertyInfo.Name };
}
#> #>

28
src/AddIns/BackendBindings/AspNet.Mvc/Project/ItemTemplates/VisualBasic/CodeTemplates/AddView/AspxVisualBasic/Edit.tt

@ -1,6 +1,8 @@
<#@ template language="VB" HostSpecific="true" #> <#@ template language="VB" HostSpecific="true" #>
<#@ import namespace="ICSharpCode.AspNet.Mvc" #> <#@ import namespace="ICSharpCode.AspNet.Mvc" #>
<#@ import namespace="Microsoft.VisualBasic.Constants" #> <#@ import namespace="Microsoft.VisualBasic.Constants" #>
<#@ import namespace="System.Collections.Generic" #>
<#@ import namespace="System.Reflection" #>
<# If MvcHost.IsPartialView Then #> <# If MvcHost.IsPartialView Then #>
<%@ Control Language="VB" Inherits="System.Web.Mvc.ViewUserControl<#= GetViewPageType() #>" %> <%@ Control Language="VB" Inherits="System.Web.Mvc.ViewUserControl<#= GetViewPageType() #>" %>
@ -32,6 +34,16 @@
<%: Html.ValidationSummary(True) %> <%: Html.ValidationSummary(True) %>
<fieldset> <fieldset>
<legend><#= MvcHost.ViewDataType.Name #></legend> <legend><#= MvcHost.ViewDataType.Name #></legend>
<# For Each modelProperty As ModelProperty in GetModelProperties() #>
<div class="editor-label">
<%: Html.LabelFor(Function(model) model.<#= modelProperty.Name #>) %>
</div>
<div class="editor-field">
<%: Html.EditorFor(Function(model) model.<#= modelProperty.Name #>) %>
<%: Html.ValidationMessageFor(Function(model) model.<#= modelProperty.Name #>) %>
</div>
<# Next #>
<p> <p>
<input type="submit" value="Save"/> <input type="submit" value="Save"/>
@ -62,6 +74,10 @@
End Get End Get
End Property End Property
Public Class ModelProperty
Public Property Name As String
End Class
Public Function GetViewPageType() As String Public Function GetViewPageType() As String
Dim viewDataTypeName As String = MvcHost.ViewDataTypeName Dim viewDataTypeName As String = MvcHost.ViewDataTypeName
If Not String.IsNullOrEmpty(viewDataTypeName) Then If Not String.IsNullOrEmpty(viewDataTypeName) Then
@ -69,4 +85,16 @@
End If End If
Return String.Empty Return String.Empty
End Function End Function
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
#> #>

28
src/AddIns/BackendBindings/AspNet.Mvc/Project/ItemTemplates/VisualBasic/CodeTemplates/AddView/VBHTML/Edit.tt

@ -1,6 +1,8 @@
<#@ template language="VB" HostSpecific="true" #> <#@ template language="VB" HostSpecific="true" #>
<#@ import namespace="ICSharpCode.AspNet.Mvc" #> <#@ import namespace="ICSharpCode.AspNet.Mvc" #>
<#@ import namespace="Microsoft.VisualBasic.Constants" #> <#@ import namespace="Microsoft.VisualBasic.Constants" #>
<#@ import namespace="System.Collections.Generic" #>
<#@ import namespace="System.Reflection" #>
<#@ output extension=".vbhtml" #> <#@ output extension=".vbhtml" #>
<#= GetModelDirective() #> <#= GetModelDirective() #>
@ -33,6 +35,16 @@ End Code
@Html.ValidationSummary(True) @Html.ValidationSummary(True)
@<fieldset> @<fieldset>
<legend><#= MvcHost.ViewDataType.Name #></legend> <legend><#= MvcHost.ViewDataType.Name #></legend>
<# For Each modelProperty As ModelProperty in GetModelProperties() #>
<div class="editor-label">
@Html.LabelFor(Function(model) model.<#= modelProperty.Name #>)
</div>
<div class="editor-field">
@Html.EditorFor(Function(model) model.<#= modelProperty.Name #>)
@Html.ValidationMessageFor(Function(model) model.<#= modelProperty.Name #>)
</div>
<# Next #>
<p> <p>
<input type="submit" value="Save"/> <input type="submit" value="Save"/>
@ -58,6 +70,10 @@ End Using
End Get End Get
End Property End Property
Public Class ModelProperty
Public Property Name As String
End Class
Function GetModelDirective() As String Function GetModelDirective() As String
Dim viewDataTypeName As String = MvcHost.ViewDataTypeName Dim viewDataTypeName As String = MvcHost.ViewDataTypeName
If Not String.IsNullOrEmpty(viewDataTypeName) Then If Not String.IsNullOrEmpty(viewDataTypeName) Then
@ -65,4 +81,16 @@ End Using
End If End If
Return String.Empty Return String.Empty
End Function End Function
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
#> #>

64
src/AddIns/BackendBindings/AspNet.Mvc/Test/Src/CodeTemplates/AspxCSharpEditViewTemplateTests.cs

@ -2,6 +2,9 @@
// This code is distributed under the GNU LGPL (for details please see \doc\license.txt) // This code is distributed under the GNU LGPL (for details please see \doc\license.txt)
using System; using System;
using System.Collections.Generic;
using System.Linq;
using AspNet.Mvc.Tests.CodeTemplates.Models; using AspNet.Mvc.Tests.CodeTemplates.Models;
using AspNet.Mvc.Tests.Helpers; using AspNet.Mvc.Tests.Helpers;
using ICSharpCode.AspNet.Mvc.AspxCSharp; using ICSharpCode.AspNet.Mvc.AspxCSharp;
@ -22,6 +25,16 @@ namespace AspNet.Mvc.Tests.CodeTemplates
templatePreprocessor.Host = mvcHost; templatePreprocessor.Host = mvcHost;
} }
IEnumerable<Edit.ModelProperty> GetModelProperties()
{
return templatePreprocessor.GetModelProperties();
}
Edit.ModelProperty GetFirstModelProperty()
{
return GetModelProperties().First();
}
[Test] [Test]
public void GetViewPageType_HostViewDataTypeNameIsMyAppMyModel_ReturnsMyAppMyModelSurroundedByAngleBrackets() public void GetViewPageType_HostViewDataTypeNameIsMyAppMyModel_ReturnsMyAppMyModelSurroundedByAngleBrackets()
{ {
@ -162,6 +175,57 @@ MyView
<div> <div>
<%: Html.ActionLink(""Back"", ""Index"") %> <%: Html.ActionLink(""Back"", ""Index"") %>
</div> </div>
";
Assert.AreEqual(expectedOutput, output);
}
[Test]
public void GetModelProperties_ModelHasOnePropertyCalledName_ReturnsModelPropertyCalledName()
{
CreateViewTemplatePreprocessor();
mvcHost.ViewDataType = typeof(ModelWithOneProperty);
Edit.ModelProperty modelProperty = GetFirstModelProperty();
Assert.AreEqual("Name", modelProperty.Name);
}
[Test]
public void TransformText_ModelHasOnePropertyAndIsPartialView_ReturnsControlWithFormAndHtmlHelpersForModelProperty()
{
CreateViewTemplatePreprocessor();
mvcHost.IsPartialView = true;
Type modelType = typeof(ModelWithOneProperty);
mvcHost.ViewDataType = modelType;
mvcHost.ViewDataTypeName = modelType.FullName;
mvcHost.ViewName = "MyView";
string output = templatePreprocessor.TransformText();
string expectedOutput =
@"<%@ Control Language=""C#"" Inherits=""System.Web.Mvc.ViewUserControl<AspNet.Mvc.Tests.CodeTemplates.Models.ModelWithOneProperty>"" %>
<% using (Html.BeginForm()) { %>
<%: Html.ValidationSummary(true) %>
<fieldset>
<legend>ModelWithOneProperty</legend>
<div class=""editor-label"">
<%: Html.LabelFor(model => model.Name) %>
</div>
<div class=""editor-field"">
<%: Html.EditorFor(model => model.Name) %>
<%: Html.ValidationMessageFor(model => model.Name) %>
</div>
<p>
<input type=""submit"" value=""Save""/>
</p>
</fieldset>
<% } %>
<div>
<%: Html.ActionLink(""Back"", ""Index"") %>
</div>
"; ";
Assert.AreEqual(expectedOutput, output); Assert.AreEqual(expectedOutput, output);
} }

64
src/AddIns/BackendBindings/AspNet.Mvc/Test/Src/CodeTemplates/RazorCSharpEditViewTemplateTests.cs

@ -2,6 +2,9 @@
// This code is distributed under the GNU LGPL (for details please see \doc\license.txt) // This code is distributed under the GNU LGPL (for details please see \doc\license.txt)
using System; using System;
using System.Collections.Generic;
using System.Linq;
using AspNet.Mvc.Tests.CodeTemplates.Models; using AspNet.Mvc.Tests.CodeTemplates.Models;
using AspNet.Mvc.Tests.Helpers; using AspNet.Mvc.Tests.Helpers;
using ICSharpCode.AspNet.Mvc.CSHtml; using ICSharpCode.AspNet.Mvc.CSHtml;
@ -22,6 +25,16 @@ namespace AspNet.Mvc.Tests.CodeTemplates
templatePreprocessor.Host = mvcHost; templatePreprocessor.Host = mvcHost;
} }
IEnumerable<Edit.ModelProperty> GetModelProperties()
{
return templatePreprocessor.GetModelProperties();
}
Edit.ModelProperty GetFirstModelProperty()
{
return GetModelProperties().First();
}
[Test] [Test]
public void GetModelDirective_HostViewDataTypeNameIsMyAppMyModel_ReturnsRazorModelFollowedByMyAppMyModel() public void GetModelDirective_HostViewDataTypeNameIsMyAppMyModel_ReturnsRazorModelFollowedByMyAppMyModel()
{ {
@ -163,6 +176,57 @@ namespace AspNet.Mvc.Tests.CodeTemplates
<div> <div>
@Html.ActionLink(""Back"", ""Index"") @Html.ActionLink(""Back"", ""Index"")
</div> </div>
";
Assert.AreEqual(expectedOutput, output);
}
[Test]
public void GetModelProperties_ModelHasOnePropertyCalledName_ReturnsModelPropertyCalledName()
{
CreateViewTemplatePreprocessor();
mvcHost.ViewDataType = typeof(ModelWithOneProperty);
Edit.ModelProperty modelProperty = GetFirstModelProperty();
Assert.AreEqual("Name", modelProperty.Name);
}
[Test]
public void TransformText_ModelHasOnePropertyAndIsPartialView_ReturnsControlWithHtmlHelpersForModelProperty()
{
CreateViewTemplatePreprocessor();
mvcHost.IsPartialView = true;
Type modelType = typeof(ModelWithOneProperty);
mvcHost.ViewDataType = modelType;
mvcHost.ViewDataTypeName = modelType.FullName;
mvcHost.ViewName = "MyView";
string output = templatePreprocessor.TransformText();
string expectedOutput =
@"@model AspNet.Mvc.Tests.CodeTemplates.Models.ModelWithOneProperty
@using (Html.BeginForm()) {
@Html.ValidationSummary(true)
<fieldset>
<legend>ModelWithOneProperty</legend>
<div class=""editor-label"">
@Html.LabelFor(model => model.Name)
</div>
<div class=""editor-field"">
@Html.EditorFor(model => model.Name)
@Html.ValidationMessageFor(model => model.Name)
</div>
<p>
<input type=""submit"" value=""Save""/>
</p>
</fieldset>
}
<div>
@Html.ActionLink(""Back"", ""Index"")
</div>
"; ";
Assert.AreEqual(expectedOutput, output); Assert.AreEqual(expectedOutput, output);
} }

Loading…
Cancel
Save