Skip to content

Commit ae63274

Browse files
committed
Merge pull request telerik#6 from vongruenigen/master
Convert ASPX import directives
2 parents 25bee59 + 4b0f213 commit ae63274

12 files changed

+127
-15
lines changed

Telerik.RazorConverter.Tests.Integration/Telerik.RazorConverter.Tests.Integration.csproj

+4-2
Original file line numberDiff line numberDiff line change
@@ -67,6 +67,7 @@
6767
<SubType>ASPXCodeBehind</SubType>
6868
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
6969
</Content>
70+
<Content Include="TestCases\TestCase25.aspx.txt" />
7071
<None Include="TestCases\TestCase24.cshtml">
7172
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
7273
</None>
@@ -224,6 +225,7 @@
224225
<SubType>ASPXCodeBehind</SubType>
225226
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
226227
</Content>
228+
<None Include="TestCases\TestCase25.cshtml" />
227229
</ItemGroup>
228230
<ItemGroup>
229231
<None Include="TestCases\TestCase01.cshtml">
@@ -233,11 +235,11 @@
233235
<ItemGroup>
234236
<ProjectReference Include="..\Telerik.RazorConverter.Tests.Common\Telerik.RazorConverter.Tests.Common.csproj">
235237
<Project>{B30D861F-7D12-436A-BC5A-930D48291037}</Project>
236-
<Name>RazorConverter.Tests.Common</Name>
238+
<Name>Telerik.RazorConverter.Tests.Common</Name>
237239
</ProjectReference>
238240
<ProjectReference Include="..\Telerik.RazorConverter\Telerik.RazorConverter.csproj">
239241
<Project>{88630458-D5BE-43B0-A7FB-BC0DFE6CB62E}</Project>
240-
<Name>RazorConverter</Name>
242+
<Name>Telerik.RazorConverter</Name>
241243
</ProjectReference>
242244
</ItemGroup>
243245
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />

Telerik.RazorConverter.Tests.Integration/TestCases/TestCase09.cshtml

+2-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
1-
@if (ViewData["telerik.web.mvc.products.examples"] != null)
1+
@using Telerik.Web.Mvc
2+
@if (ViewData["telerik.web.mvc.products.examples"] != null)
23
{
34
Html.Telerik().PanelBar()
45
.Name("navigation-product-examples")
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,42 @@
1+
<%@ Page Language="C#" Inherits="System.Web.Mvc.ViewPage<IEnumerable<OrderDto>>" %>
2+
<%@ Import Namespace="Project.Namespace.To.Models" %>
3+
4+
<asp:content contentplaceholderid="maincontent" runat="server">
5+
<% using (Html.Configurator("The grid should...")
6+
.PostTo("FirstLook", "Grid")
7+
.Begin())
8+
{ %>
9+
<ul>
10+
<li><%= Html.CheckBox("ajax", true, "make <strong>AJAX</strong> requests")%></li>
11+
<li><%= Html.CheckBox("grouping", true, "allow <strong>grouping</strong> of data")%></li>
12+
<li><%= Html.CheckBox("filtering", true, "allow <strong>filtering</strong> of data")%></li>
13+
<li><%= Html.CheckBox("paging", true, "have <strong>pages</strong> with 10 items")%></li>
14+
<li><%= Html.CheckBox("scrolling", true, "show a <strong>scrollbar</strong> when there are many items")%></li>
15+
<li><%= Html.CheckBox("sorting", true, "allow <strong>sorting</strong> of data")%></li>
16+
<li><%= Html.CheckBox("showFooter", true, "show footer")%></li>
17+
</ul>
18+
<button class="t-button t-state-default" type="submit">Apply</button>
19+
<% } %>
20+
21+
<%= Html.Telerik().Grid(Model)
22+
.Name("Grid")
23+
.Columns(columns =>
24+
{
25+
columns.Bound(o => o.OrderID).Width(100);
26+
columns.Bound(o => o.ContactName).Width(200);
27+
columns.Bound(o => o.ShipAddress);
28+
columns.Bound(o => o.OrderDate).Format("{0:MM/dd/yyyy}").Width(120);
29+
})
30+
.DataBinding(dataBinding =>
31+
{
32+
dataBinding.Server().Select("FirstLook", "Grid", new { ajax = ViewData["ajax"] });
33+
dataBinding.Ajax().Select("_FirstLook", "Grid").Enabled((bool)ViewData["ajax"]);
34+
})
35+
.Scrollable(scrolling => scrolling.Enabled((bool)ViewData["scrolling"]))
36+
.Sortable(sorting => sorting.Enabled((bool)ViewData["sorting"]))
37+
.Pageable(paging => paging.Enabled((bool)ViewData["paging"]))
38+
.Filterable(filtering => filtering.Enabled((bool)ViewData["filtering"]))
39+
.Groupable(grouping => grouping.Enabled((bool)ViewData["grouping"]))
40+
.Footer((bool)ViewData["showFooter"])
41+
%>
42+
</asp:content>
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
@model IEnumerable<OrderDto>
2+
@using Project.Namespace.To.Models
3+
@using (Html.Configurator("The grid should...")
4+
.PostTo("FirstLook", "Grid")
5+
.Begin())
6+
{
7+
<ul>
8+
<li>@Html.CheckBox("ajax", true, "make <strong>AJAX</strong> requests")</li>
9+
<li>@Html.CheckBox("grouping", true, "allow <strong>grouping</strong> of data")</li>
10+
<li>@Html.CheckBox("filtering", true, "allow <strong>filtering</strong> of data")</li>
11+
<li>@Html.CheckBox("paging", true, "have <strong>pages</strong> with 10 items")</li>
12+
<li>@Html.CheckBox("scrolling", true, "show a <strong>scrollbar</strong> when there are many items")</li>
13+
<li>@Html.CheckBox("sorting", true, "allow <strong>sorting</strong> of data")</li>
14+
<li>@Html.CheckBox("showFooter", true, "show footer")</li>
15+
</ul>
16+
<button class="t-button t-state-default" type="submit">Apply</button>
17+
}
18+
@(Html.Telerik().Grid(Model)
19+
.Name("Grid")
20+
.Columns(columns =>
21+
{
22+
columns.Bound(o => o.OrderID).Width(100);
23+
columns.Bound(o => o.ContactName).Width(200);
24+
columns.Bound(o => o.ShipAddress);
25+
columns.Bound(o => o.OrderDate).Format("{0:MM/dd/yyyy}").Width(120);
26+
})
27+
.DataBinding(dataBinding =>
28+
{
29+
dataBinding.Server().Select("FirstLook", "Grid", new { ajax = ViewData["ajax"] });
30+
dataBinding.Ajax().Select("_FirstLook", "Grid").Enabled((bool)ViewData["ajax"]);
31+
})
32+
.Scrollable(scrolling => scrolling.Enabled((bool)ViewData["scrolling"]))
33+
.Sortable(sorting => sorting.Enabled((bool)ViewData["sorting"]))
34+
.Pageable(paging => paging.Enabled((bool)ViewData["paging"]))
35+
.Filterable(filtering => filtering.Enabled((bool)ViewData["filtering"]))
36+
.Groupable(grouping => grouping.Enabled((bool)ViewData["grouping"]))
37+
.Footer((bool)ViewData["showFooter"])
38+
)

Telerik.RazorConverter.Tests/Telerik.RazorConverter.Tests.csproj

+2-2
Original file line numberDiff line numberDiff line change
@@ -86,11 +86,11 @@
8686
<ItemGroup>
8787
<ProjectReference Include="..\Telerik.RazorConverter.Tests.Common\Telerik.RazorConverter.Tests.Common.csproj">
8888
<Project>{B30D861F-7D12-436A-BC5A-930D48291037}</Project>
89-
<Name>RazorConverter.Tests.Common</Name>
89+
<Name>Telerik.RazorConverter.Tests.Common</Name>
9090
</ProjectReference>
9191
<ProjectReference Include="..\Telerik.RazorConverter\Telerik.RazorConverter.csproj">
9292
<Project>{88630458-D5BE-43B0-A7FB-BC0DFE6CB62E}</Project>
93-
<Name>RazorConverter</Name>
93+
<Name>Telerik.RazorConverter</Name>
9494
</ProjectReference>
9595
</ItemGroup>
9696
<ItemGroup />

Telerik.RazorConverter.Tests/WebForms/WebFormsParserTests.cs

+1
Original file line numberDiff line numberDiff line change
@@ -215,6 +215,7 @@ public void Should_treat_doctype_as_text()
215215
var document = parser.Parse(docType);
216216
((IWebFormsTextNode)document.RootNode.Children[0]).Text.ShouldEqual(docType);
217217
}
218+
218219
}
219220
}
220221

Telerik.RazorConverter.sln

+4
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,10 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Telerik.RazorConverter.Test
2020
EndProject
2121
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Telerik.RazorConverter.Tests.Integration", "Telerik.RazorConverter.Tests.Integration\Telerik.RazorConverter.Tests.Integration.csproj", "{D41C5C1A-83E4-43E4-AE54-2FC44CE87BA8}"
2222
EndProject
23+
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "TestItems", "TestItems", "{02F8810D-BE2D-4D6E-9EF7-7A7DBA8502A6}"
24+
EndProject
25+
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Solution Items", "Solution Items", "{F4DA0538-E425-4E71-A508-0D024B125043}"
26+
EndProject
2327
Global
2428
GlobalSection(SolutionConfigurationPlatforms) = preSolution
2529
Debug|Any CPU = Debug|Any CPU

Telerik.RazorConverter/Razor/Converters/DirectiveConverter.cs

+23-9
Original file line numberDiff line numberDiff line change
@@ -23,19 +23,33 @@ public IList<IRazorNode> ConvertNode(IWebFormsNode node)
2323
var result = new List<IRazorNode>();
2424

2525
var directiveNode = node as IWebFormsDirectiveNode;
26-
if (directiveNode != null &&
27-
directiveNode.Attributes.ContainsKey("inherits"))
26+
27+
if (directiveNode != null)
2828
{
29-
var inheritsFrom = directiveNode.Attributes["inherits"];
30-
var viewPageGenericType = new Regex("System.Web.Mvc.(?:ViewPage|ViewUserControl)<(?<type>.*)>");
31-
var typeMatch = viewPageGenericType.Match(inheritsFrom);
32-
if (typeMatch.Success)
29+
if (directiveNode.Attributes.ContainsKey("inherits"))
3330
{
34-
result.Add(DirectiveNodeFactory.CreateDirectiveNode("model", typeMatch.Result("${type}")));
31+
var inheritsFrom = directiveNode.Attributes["inherits"];
32+
var viewPageGenericType = new Regex("System.Web.Mvc.(?:ViewPage|ViewUserControl)<(?<type>.*)>");
33+
var typeMatch = viewPageGenericType.Match(inheritsFrom);
34+
if (typeMatch.Success)
35+
{
36+
result.Add(DirectiveNodeFactory.CreateDirectiveNode("model", typeMatch.Result("${type}")));
37+
}
38+
else if (inheritsFrom != "System.Web.Mvc.ViewPage" && inheritsFrom != "System.Web.Mvc.ViewUserControl")
39+
{
40+
result.Add(DirectiveNodeFactory.CreateDirectiveNode("inherits", directiveNode.Attributes["inherits"]));
41+
}
3542
}
36-
else if (inheritsFrom != "System.Web.Mvc.ViewPage" && inheritsFrom != "System.Web.Mvc.ViewUserControl")
43+
else if (directiveNode.Attributes.ContainsKey("namespace") &&
44+
directiveNode.Directive == DirectiveType.Import)
3745
{
38-
result.Add(DirectiveNodeFactory.CreateDirectiveNode("inherits", directiveNode.Attributes["inherits"]));
46+
/* Case of of a using directive */
47+
var imports = directiveNode.Attributes["namespace"];
48+
49+
if (!string.IsNullOrEmpty(imports))
50+
{
51+
result.Add(DirectiveNodeFactory.CreateDirectiveNode("using", directiveNode.Attributes["namespace"]));
52+
}
3953
}
4054
}
4155

Telerik.RazorConverter/Razor/Converters/WebFormsToRazorConverter.cs

+5
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,11 @@ public IDocument<IRazorNode> Convert(IDocument<IWebFormsNode> srcDoc)
2929
{
3030
if (converter.CanConvertNode(srcNode))
3131
{
32+
if (srcNode.Type == NodeType.Directive && srcNode.Attributes.ContainsKey("namespace"))
33+
{
34+
var i = 1;
35+
}
36+
3237
foreach (var dstNode in converter.ConvertNode(srcNode))
3338
{
3439
rootNode.Children.Add(dstNode);

Telerik.RazorConverter/WebForms/DOM/DirectiveType.cs

+1
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ public enum DirectiveType
44
{
55
Page,
66
Control,
7+
Import,
78
Unknown
89
}
910
}

Telerik.RazorConverter/WebForms/DOM/WebFormsNodeFactory.cs

+4
Original file line numberDiff line numberDiff line change
@@ -66,6 +66,10 @@ private IWebFormsNode DirectiveNodeBuilder(Match match)
6666
{
6767
node.Directive = DirectiveType.Control;
6868
}
69+
else if (directiveType.Contains("import"))
70+
{
71+
node.Directive = DirectiveType.Import;
72+
}
6973
}
7074

7175
return node;

aspx2razor/aspx2razor.csproj

+1-1
Original file line numberDiff line numberDiff line change
@@ -63,7 +63,7 @@
6363
<ItemGroup>
6464
<ProjectReference Include="..\Telerik.RazorConverter\Telerik.RazorConverter.csproj">
6565
<Project>{88630458-D5BE-43B0-A7FB-BC0DFE6CB62E}</Project>
66-
<Name>RazorConverter</Name>
66+
<Name>Telerik.RazorConverter</Name>
6767
</ProjectReference>
6868
</ItemGroup>
6969
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />

0 commit comments

Comments
 (0)