Skip to content

Commit 4f5f0b0

Browse files
committed
Add Grid example: Get all filters recursively and modify them on server
1 parent c38659a commit 4f5f0b0

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

51 files changed

+67935
-0
lines changed
Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
2+
Microsoft Visual Studio Solution File, Format Version 12.00
3+
# Visual Studio 14
4+
VisualStudioVersion = 14.0.25420.1
5+
MinimumVisualStudioVersion = 10.0.40219.1
6+
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "GetFiltersRecursivelyAndModifyThemOnServer", "GetFiltersRecursivelyAndModifyThemOnServer\GetFiltersRecursivelyAndModifyThemOnServer.csproj", "{A9CAB7E6-0D1F-442B-ADCA-5087C224BED3}"
7+
EndProject
8+
Global
9+
GlobalSection(SolutionConfigurationPlatforms) = preSolution
10+
Debug|Any CPU = Debug|Any CPU
11+
Release|Any CPU = Release|Any CPU
12+
EndGlobalSection
13+
GlobalSection(ProjectConfigurationPlatforms) = postSolution
14+
{A9CAB7E6-0D1F-442B-ADCA-5087C224BED3}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
15+
{A9CAB7E6-0D1F-442B-ADCA-5087C224BED3}.Debug|Any CPU.Build.0 = Debug|Any CPU
16+
{A9CAB7E6-0D1F-442B-ADCA-5087C224BED3}.Release|Any CPU.ActiveCfg = Release|Any CPU
17+
{A9CAB7E6-0D1F-442B-ADCA-5087C224BED3}.Release|Any CPU.Build.0 = Release|Any CPU
18+
EndGlobalSection
19+
GlobalSection(SolutionProperties) = preSolution
20+
HideSolutionNode = FALSE
21+
EndGlobalSection
22+
EndGlobal
Lines changed: 86 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,86 @@
1+
using System;
2+
using System.Collections.Generic;
3+
using System.Linq;
4+
using System.Web;
5+
using System.Web.Mvc;
6+
using GetFiltersRecursivelyAndModifyThemOnServer.Models;
7+
using Kendo.Mvc.UI;
8+
using Kendo.Mvc.Extensions;
9+
using System.Threading;
10+
using System.Globalization;
11+
using Kendo.Mvc;
12+
13+
namespace GetFiltersRecursivelyAndModifyThemOnServer.Controllers
14+
{
15+
public class HomeController : Controller
16+
{
17+
protected override void Initialize(System.Web.Routing.RequestContext requestContext)
18+
{
19+
if (!string.IsNullOrEmpty(requestContext.HttpContext.Request["culture"]))
20+
{
21+
Thread.CurrentThread.CurrentCulture = Thread.CurrentThread.CurrentUICulture = new CultureInfo(requestContext.HttpContext.Request["culture"]);
22+
}
23+
base.Initialize(requestContext);
24+
}
25+
26+
public ActionResult Index()
27+
{
28+
ViewData["employees"] = EmployeeRepository.GetAll();
29+
30+
return View();
31+
}
32+
33+
private void ModifyFilters(IEnumerable<IFilterDescriptor> filters)
34+
{
35+
if (filters.Any())
36+
{
37+
foreach (var filter in filters)
38+
{
39+
var descriptor = filter as FilterDescriptor;
40+
if (descriptor != null && descriptor.Member == "OrderDate")
41+
{
42+
descriptor.Member = "OrderDate.Date";
43+
}
44+
else if (filter is CompositeFilterDescriptor)
45+
{
46+
ModifyFilters(((CompositeFilterDescriptor)filter).FilterDescriptors);
47+
}
48+
}
49+
}
50+
}
51+
52+
public ActionResult Read([DataSourceRequest] DataSourceRequest request)
53+
{
54+
ModifyFilters(request.Filters);
55+
56+
return Json(OrderRepository.GetAll().ToDataSourceResult(request));
57+
}
58+
59+
public ActionResult Delete([DataSourceRequest] DataSourceRequest request, Order order)
60+
{
61+
if (order != null && ModelState.IsValid)
62+
{
63+
OrderRepository.Remove(order);
64+
}
65+
66+
return Json(ModelState.ToDataSourceResult());
67+
}
68+
69+
[AcceptVerbs(HttpVerbs.Post)]
70+
public ActionResult Update([DataSourceRequest] DataSourceRequest request, Order order)
71+
{
72+
if (order != null && ModelState.IsValid)
73+
{
74+
OrderRepository.Update(order);
75+
}
76+
77+
return Json(ModelState.ToDataSourceResult());
78+
}
79+
80+
public ActionResult Create([DataSourceRequest] DataSourceRequest request, Order order)
81+
{
82+
OrderRepository.Insert(order);
83+
return Json(new[] { order }.ToDataSourceResult(request, ModelState));
84+
}
85+
}
86+
}
Lines changed: 253 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,253 @@
1+
<?xml version="1.0" encoding="utf-8"?>
2+
<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
3+
<Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />
4+
<PropertyGroup>
5+
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
6+
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
7+
<ProductVersion>
8+
</ProductVersion>
9+
<SchemaVersion>2.0</SchemaVersion>
10+
<ProjectGuid>{A9CAB7E6-0D1F-442B-ADCA-5087C224BED3}</ProjectGuid>
11+
<ProjectTypeGuids>{E3E379DF-F4C6-4180-9B81-6769533ABE47};{349c5851-65df-11da-9384-00065b846f21};{fae04ec0-301f-11d3-bf4b-00c04f79efbc}</ProjectTypeGuids>
12+
<OutputType>Library</OutputType>
13+
<AppDesignerFolder>Properties</AppDesignerFolder>
14+
<RootNamespace>ForeignKeyColumnDemo</RootNamespace>
15+
<AssemblyName>ForeignKeyColumnDemo</AssemblyName>
16+
<TargetFrameworkVersion>v4.5</TargetFrameworkVersion>
17+
<MvcBuildViews>false</MvcBuildViews>
18+
<UseIISExpress>true</UseIISExpress>
19+
<IISExpressSSLPort />
20+
<IISExpressAnonymousAuthentication />
21+
<IISExpressWindowsAuthentication />
22+
<IISExpressUseClassicPipelineMode />
23+
<UseGlobalApplicationHostFile />
24+
</PropertyGroup>
25+
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
26+
<DebugSymbols>true</DebugSymbols>
27+
<DebugType>full</DebugType>
28+
<Optimize>false</Optimize>
29+
<OutputPath>bin\</OutputPath>
30+
<DefineConstants>DEBUG;TRACE</DefineConstants>
31+
<ErrorReport>prompt</ErrorReport>
32+
<WarningLevel>4</WarningLevel>
33+
</PropertyGroup>
34+
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
35+
<DebugType>pdbonly</DebugType>
36+
<Optimize>true</Optimize>
37+
<OutputPath>bin\</OutputPath>
38+
<DefineConstants>TRACE</DefineConstants>
39+
<ErrorReport>prompt</ErrorReport>
40+
<WarningLevel>4</WarningLevel>
41+
</PropertyGroup>
42+
<ItemGroup>
43+
<Reference Include="Kendo.Mvc, Version=2016.2.714.440, Culture=neutral, PublicKeyToken=121fae78165ba3d4, processorArchitecture=MSIL">
44+
<SpecificVersion>False</SpecificVersion>
45+
<HintPath>..\lib\KENDOUIMVC\2016.2.714.Trial\Kendo.Mvc.dll</HintPath>
46+
</Reference>
47+
<Reference Include="Microsoft.CSharp" />
48+
<Reference Include="System" />
49+
<Reference Include="System.Data" />
50+
<Reference Include="System.Data.Entity" />
51+
<Reference Include="System.Drawing" />
52+
<Reference Include="System.Web.DynamicData" />
53+
<Reference Include="System.Web.Entity" />
54+
<Reference Include="System.Web.ApplicationServices" />
55+
<Reference Include="System.ComponentModel.DataAnnotations" />
56+
<Reference Include="System.Core" />
57+
<Reference Include="System.Data.DataSetExtensions" />
58+
<Reference Include="System.Xml.Linq" />
59+
<Reference Include="System.Web" />
60+
<Reference Include="System.Web.Extensions" />
61+
<Reference Include="System.Web.Abstractions" />
62+
<Reference Include="System.Web.Routing" />
63+
<Reference Include="System.Xml" />
64+
<Reference Include="System.Configuration" />
65+
<Reference Include="System.Transactions" />
66+
<Reference Include="System.Web.Services" />
67+
<Reference Include="System.EnterpriseServices" />
68+
<Reference Include="EntityFramework">
69+
<HintPath>..\packages\EntityFramework.5.0.0\lib\net45\EntityFramework.dll</HintPath>
70+
</Reference>
71+
<Reference Include="Microsoft.Web.Infrastructure, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
72+
<Private>True</Private>
73+
<HintPath>..\packages\Microsoft.Web.Infrastructure.1.0.0.0\lib\net40\Microsoft.Web.Infrastructure.dll</HintPath>
74+
</Reference>
75+
<Reference Include="Microsoft.Web.Mvc.FixedDisplayModes, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
76+
<Private>True</Private>
77+
<HintPath>..\packages\Microsoft.AspNet.Mvc.FixedDisplayModes.1.0.0\lib\net40\Microsoft.Web.Mvc.FixedDisplayModes.dll</HintPath>
78+
</Reference>
79+
<Reference Include="Newtonsoft.Json">
80+
<HintPath>..\packages\Newtonsoft.Json.4.5.11\lib\net40\Newtonsoft.Json.dll</HintPath>
81+
</Reference>
82+
<Reference Include="System.Net.Http">
83+
</Reference>
84+
<Reference Include="System.Net.Http.Formatting, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
85+
<HintPath>..\packages\Microsoft.AspNet.WebApi.Client.4.0.20710.0\lib\net40\System.Net.Http.Formatting.dll</HintPath>
86+
</Reference>
87+
<Reference Include="System.Net.Http.WebRequest">
88+
</Reference>
89+
<Reference Include="System.Web.Helpers, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
90+
<Private>True</Private>
91+
<HintPath>..\packages\Microsoft.AspNet.WebPages.2.0.20710.0\lib\net40\System.Web.Helpers.dll</HintPath>
92+
</Reference>
93+
<Reference Include="System.Web.Http, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
94+
<HintPath>..\packages\Microsoft.AspNet.WebApi.Core.4.0.20710.0\lib\net40\System.Web.Http.dll</HintPath>
95+
</Reference>
96+
<Reference Include="System.Web.Http.WebHost, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
97+
<HintPath>..\packages\Microsoft.AspNet.WebApi.WebHost.4.0.20710.0\lib\net40\System.Web.Http.WebHost.dll</HintPath>
98+
</Reference>
99+
<Reference Include="System.Web.Mvc, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
100+
<Private>True</Private>
101+
<HintPath>..\packages\Microsoft.AspNet.Mvc.4.0.20710.0\lib\net40\System.Web.Mvc.dll</HintPath>
102+
</Reference>
103+
<Reference Include="System.Web.Optimization">
104+
<HintPath>..\packages\Microsoft.AspNet.Web.Optimization.1.0.0\lib\net40\System.Web.Optimization.dll</HintPath>
105+
</Reference>
106+
<Reference Include="System.Web.Razor, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
107+
<Private>True</Private>
108+
<HintPath>..\packages\Microsoft.AspNet.Razor.2.0.20715.0\lib\net40\System.Web.Razor.dll</HintPath>
109+
</Reference>
110+
<Reference Include="System.Web.WebPages, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
111+
<Private>True</Private>
112+
<HintPath>..\packages\Microsoft.AspNet.WebPages.2.0.20710.0\lib\net40\System.Web.WebPages.dll</HintPath>
113+
</Reference>
114+
<Reference Include="System.Web.WebPages.Deployment, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
115+
<Private>True</Private>
116+
<HintPath>..\packages\Microsoft.AspNet.WebPages.2.0.20710.0\lib\net40\System.Web.WebPages.Deployment.dll</HintPath>
117+
</Reference>
118+
<Reference Include="System.Web.WebPages.Razor, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
119+
<Private>True</Private>
120+
<HintPath>..\packages\Microsoft.AspNet.WebPages.2.0.20710.0\lib\net40\System.Web.WebPages.Razor.dll</HintPath>
121+
</Reference>
122+
<Reference Include="WebMatrix.Data, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
123+
<Private>True</Private>
124+
<HintPath>..\packages\Microsoft.AspNet.WebPages.Data.2.0.20710.0\lib\net40\WebMatrix.Data.dll</HintPath>
125+
</Reference>
126+
<Reference Include="WebMatrix.WebData, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
127+
<Private>True</Private>
128+
<HintPath>..\packages\Microsoft.AspNet.WebPages.WebData.2.0.20710.0\lib\net40\WebMatrix.WebData.dll</HintPath>
129+
</Reference>
130+
<Reference Include="DotNetOpenAuth.AspNet, Version=4.1.0.0, Culture=neutral, PublicKeyToken=2780ccd10d57b246, processorArchitecture=MSIL">
131+
<Private>True</Private>
132+
<HintPath>..\packages\DotNetOpenAuth.AspNet.4.1.4.12333\lib\net45-full\DotNetOpenAuth.AspNet.dll</HintPath>
133+
</Reference>
134+
<Reference Include="DotNetOpenAuth.Core, Version=4.1.0.0, Culture=neutral, PublicKeyToken=2780ccd10d57b246, processorArchitecture=MSIL">
135+
<Private>True</Private>
136+
<HintPath>..\packages\DotNetOpenAuth.Core.4.1.4.12333\lib\net45-full\DotNetOpenAuth.Core.dll</HintPath>
137+
</Reference>
138+
<Reference Include="DotNetOpenAuth.OAuth.Consumer, Version=4.1.0.0, Culture=neutral, PublicKeyToken=2780ccd10d57b246, processorArchitecture=MSIL">
139+
<Private>True</Private>
140+
<HintPath>..\packages\DotNetOpenAuth.OAuth.Consumer.4.1.4.12333\lib\net45-full\DotNetOpenAuth.OAuth.Consumer.dll</HintPath>
141+
</Reference>
142+
<Reference Include="DotNetOpenAuth.OAuth, Version=4.1.0.0, Culture=neutral, PublicKeyToken=2780ccd10d57b246, processorArchitecture=MSIL">
143+
<Private>True</Private>
144+
<HintPath>..\packages\DotNetOpenAuth.OAuth.Core.4.1.4.12333\lib\net45-full\DotNetOpenAuth.OAuth.dll</HintPath>
145+
</Reference>
146+
<Reference Include="DotNetOpenAuth.OpenId, Version=4.1.0.0, Culture=neutral, PublicKeyToken=2780ccd10d57b246, processorArchitecture=MSIL">
147+
<Private>True</Private>
148+
<HintPath>..\packages\DotNetOpenAuth.OpenId.Core.4.1.4.12333\lib\net45-full\DotNetOpenAuth.OpenId.dll</HintPath>
149+
</Reference>
150+
<Reference Include="DotNetOpenAuth.OpenId.RelyingParty, Version=4.1.0.0, Culture=neutral, PublicKeyToken=2780ccd10d57b246, processorArchitecture=MSIL">
151+
<Private>True</Private>
152+
<HintPath>..\packages\DotNetOpenAuth.OpenId.RelyingParty.4.1.4.12333\lib\net45-full\DotNetOpenAuth.OpenId.RelyingParty.dll</HintPath>
153+
</Reference>
154+
<Reference Include="System.Web.Http.OData, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
155+
<Private>True</Private>
156+
<HintPath>..\packages\Microsoft.AspNet.WebApi.OData.4.0.0\lib\net40\System.Web.Http.OData.dll</HintPath>
157+
</Reference>
158+
<Reference Include="Microsoft.Data.Edm, Version=5.2.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
159+
<Private>True</Private>
160+
<HintPath>..\packages\Microsoft.Data.Edm.5.2.0\lib\net40\Microsoft.Data.Edm.dll</HintPath>
161+
</Reference>
162+
<Reference Include="Microsoft.Data.OData, Version=5.2.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
163+
<Private>True</Private>
164+
<HintPath>..\packages\Microsoft.Data.OData.5.2.0\lib\net40\Microsoft.Data.OData.dll</HintPath>
165+
</Reference>
166+
<Reference Include="System.Spatial, Version=5.2.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
167+
<Private>True</Private>
168+
<HintPath>..\packages\System.Spatial.5.2.0\lib\net40\System.Spatial.dll</HintPath>
169+
</Reference>
170+
<Reference Include="WebGrease">
171+
<Private>True</Private>
172+
<HintPath>..\packages\WebGrease.1.3.0\lib\WebGrease.dll</HintPath>
173+
</Reference>
174+
<Reference Include="Antlr3.Runtime">
175+
<Private>True</Private>
176+
<HintPath>..\packages\WebGrease.1.3.0\lib\Antlr3.Runtime.dll</HintPath>
177+
</Reference>
178+
</ItemGroup>
179+
<ItemGroup>
180+
<Compile Include="Controllers\HomeController.cs" />
181+
<Compile Include="Global.asax.cs">
182+
<DependentUpon>Global.asax</DependentUpon>
183+
</Compile>
184+
<Compile Include="Models\Employee.cs" />
185+
<Compile Include="Models\EmployeeRepository.cs" />
186+
<Compile Include="Models\Order.cs" />
187+
<Compile Include="Models\OrderRepository.cs" />
188+
<Compile Include="Properties\AssemblyInfo.cs" />
189+
</ItemGroup>
190+
<ItemGroup>
191+
<Content Include="Global.asax" />
192+
<Content Include="Web.config" />
193+
<Content Include="Web.Debug.config">
194+
<DependentUpon>Web.config</DependentUpon>
195+
</Content>
196+
<Content Include="Web.Release.config">
197+
<DependentUpon>Web.config</DependentUpon>
198+
</Content>
199+
<Content Include="Views\Web.config">
200+
</Content>
201+
<Content Include="Views\Home\Index.cshtml" />
202+
<Content Include="Views\Shared\_Layout.cshtml" />
203+
<Content Include="Views\_ViewStart.cshtml" />
204+
<Content Include="Views\Shared\EditorTemplates\Currency.cshtml" />
205+
<Content Include="Views\Shared\EditorTemplates\Date.cshtml" />
206+
<Content Include="Views\Shared\EditorTemplates\DateTime.cshtml" />
207+
<Content Include="Views\Shared\EditorTemplates\Email.cshtml" />
208+
<Content Include="Views\Shared\EditorTemplates\EmailAddress.cshtml" />
209+
<Content Include="Views\Shared\EditorTemplates\GridForeignKey.cshtml" />
210+
<Content Include="Views\Shared\EditorTemplates\Integer.cshtml" />
211+
<Content Include="Views\Shared\EditorTemplates\Number.cshtml" />
212+
<Content Include="Views\Shared\EditorTemplates\Password.cshtml" />
213+
<Content Include="Views\Shared\EditorTemplates\String.cshtml" />
214+
<Content Include="Views\Shared\EditorTemplates\Time.cshtml" />
215+
<Content Include="Views\Shared\EditorTemplates\Url.cshtml" />
216+
</ItemGroup>
217+
<ItemGroup>
218+
<Folder Include="App_Data\" />
219+
<Folder Include="Content\" />
220+
</ItemGroup>
221+
<ItemGroup>
222+
<Content Include="packages.config" />
223+
</ItemGroup>
224+
<PropertyGroup>
225+
<VisualStudioVersion Condition="'$(VisualStudioVersion)' == ''">10.0</VisualStudioVersion>
226+
<VSToolsPath Condition="'$(VSToolsPath)' == ''">$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion)</VSToolsPath>
227+
</PropertyGroup>
228+
<Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" />
229+
<Import Project="$(VSToolsPath)\WebApplications\Microsoft.WebApplication.targets" Condition="'$(VSToolsPath)' != ''" />
230+
<Import Project="$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v10.0\WebApplications\Microsoft.WebApplication.targets" Condition="false" />
231+
<Target Name="MvcBuildViews" AfterTargets="AfterBuild" Condition="'$(MvcBuildViews)'=='true'">
232+
<AspNetCompiler VirtualPath="temp" PhysicalPath="$(WebProjectOutputDir)" />
233+
</Target>
234+
<ProjectExtensions>
235+
<VisualStudio>
236+
<FlavorProperties GUID="{349c5851-65df-11da-9384-00065b846f21}">
237+
<WebProjectProperties>
238+
<UseIIS>True</UseIIS>
239+
<AutoAssignPort>True</AutoAssignPort>
240+
<DevelopmentServerPort>0</DevelopmentServerPort>
241+
<DevelopmentServerVPath>/</DevelopmentServerVPath>
242+
<IISUrl>http://localhost:29145/</IISUrl>
243+
<NTLMAuthentication>False</NTLMAuthentication>
244+
<UseCustomServer>False</UseCustomServer>
245+
<CustomServerUrl>
246+
</CustomServerUrl>
247+
<SaveServerSettingsInUserFile>False</SaveServerSettingsInUserFile>
248+
</WebProjectProperties>
249+
</FlavorProperties>
250+
<UserProperties UseCdnSupport="True" />
251+
</VisualStudio>
252+
</ProjectExtensions>
253+
</Project>
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
<%@ Application Codebehind="Global.asax.cs" Inherits="ForeignKeyColumnDemo.MvcApplication" Language="C#" %>

0 commit comments

Comments
 (0)