Skip to content

Commit 3168993

Browse files
committed
Draft of template changes.
1 parent 216ec31 commit 3168993

File tree

8 files changed

+181
-7
lines changed

8 files changed

+181
-7
lines changed
Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,39 @@
1+
@page "/weather/details/{date}"
2+
@*#if (UseServer && !InteractiveAtRoot)
3+
@rendermode InteractiveAuto
4+
##elseif (!InteractiveAtRoot)
5+
@rendermode InteractiveWebAssembly
6+
##endif*@
7+
@inject NavigationManager NavigationManager
8+
9+
@if (weatherDetails == null)
10+
{
11+
<p><em>Loading...</em></p>
12+
}
13+
else
14+
{
15+
<div>
16+
<p><strong>Date:</strong> @weatherDetails.Date.ToShortDateString()</p>
17+
<p><strong>Temperature (C):</strong> @weatherDetails.TemperatureC</p>
18+
<p><strong>Temperature (F):</strong> @weatherDetails.TemperatureF</p>
19+
<p><strong>Summary:</strong> @weatherDetails.Summary</p>
20+
</div>
21+
}
22+
23+
@code{
24+
[Parameter]
25+
public string? Date { get; set; }
26+
27+
private WeatherForecast? weatherDetails;
28+
29+
protected override async Task OnInitializedAsync()
30+
{
31+
weatherDetails = null;
32+
33+
// Simulate fetching data from a database
34+
await Task.Delay(500);
35+
36+
// Simulate a scenario where the details are not found
37+
NavigationManager.NotFound();
38+
}
39+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
public class WeatherForecast
2+
{
3+
public int Id { get; set; }
4+
public DateOnly Date { get; set; }
5+
public int TemperatureC { get; set; }
6+
public string? Summary { get; set; }
7+
public int TemperatureF => 32 + (int)(TemperatureC / 0.5556);
8+
}
Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
@page "/not-found"
2+
3+
<h3>Not Found</h3>
4+
<p>Sorry, the content you are looking for does not exist.</p>

src/ProjectTemplates/Web.ProjectTemplates/content/BlazorWeb-CSharp/BlazorWeb-CSharp/Components/Pages/Weather.razor

Lines changed: 12 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,13 @@ else
3232
<td>@forecast.TemperatureC</td>
3333
<td>@forecast.TemperatureF</td>
3434
<td>@forecast.Summary</td>
35+
<td>
36+
@*#if (InteractiveAtRoot) -->
37+
<button class="btn btn-primary" @onclick="() => NavigateToDetails(forecast.Id)">More info</button>
38+
##else
39+
<a href="@($"/weather/details/{forecast.Id}")">More info</a>
40+
##endif*@
41+
</td>
3542
</tr>
3643
}
3744
</tbody>
@@ -54,17 +61,17 @@ else
5461
var summaries = new[] { "Freezing", "Bracing", "Chilly", "Cool", "Mild", "Warm", "Balmy", "Hot", "Sweltering", "Scorching" };
5562
forecasts = Enumerable.Range(1, 5).Select(index => new WeatherForecast
5663
{
64+
index = index,
5765
Date = startDate.AddDays(index),
5866
TemperatureC = Random.Shared.Next(-20, 55),
5967
Summary = summaries[Random.Shared.Next(summaries.Length)]
6068
}).ToArray();
6169
}
6270

63-
private class WeatherForecast
71+
@*#if (InteractiveAtRoot) -->
72+
private void NavigateToDetails(int id)
6473
{
65-
public DateOnly Date { get; set; }
66-
public int TemperatureC { get; set; }
67-
public string? Summary { get; set; }
68-
public int TemperatureF => 32 + (int)(TemperatureC / 0.5556);
74+
NavigationManager.NavigateTo($"/weather/details/{id}");
6975
}
76+
##endif*@
7077
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
@page "/weather/details/{id:int}"
2+
@*#if (!InteractiveAtRoot) -->
3+
@attribute [StreamRendering]
4+
##endif*@
5+
@inject NavigationManager NavigationManager
6+
7+
@if (weatherDetails == null)
8+
{
9+
<p><em>Loading...</em></p>
10+
}
11+
else
12+
{
13+
<div>
14+
<p><strong>Date:</strong> @weatherDetails.Date.ToShortDateString()</p>
15+
<p><strong>Temperature (C):</strong> @weatherDetails.TemperatureC</p>
16+
<p><strong>Temperature (F):</strong> @weatherDetails.TemperatureF</p>
17+
<p><strong>Summary:</strong> @weatherDetails.Summary</p>
18+
</div>
19+
}
20+
21+
@code{
22+
[Parameter]
23+
public int Id { get; set; }
24+
25+
private WeatherForecast? weatherDetails;
26+
27+
protected override async Task OnInitializedAsync()
28+
{
29+
weatherDetails = null;
30+
31+
// Simulate fetching data from a database
32+
await Task.Delay(500);
33+
34+
// Simulate a scenario where the details are not found
35+
NavigationManager.NotFound();
36+
}
37+
}

src/ProjectTemplates/Web.ProjectTemplates/content/BlazorWeb-CSharp/BlazorWeb-CSharp/Components/Routes.razor

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,9 +2,9 @@
22
@using BlazorWeb_CSharp.Components.Account.Shared
33
##endif*@
44
@*#if (UseWebAssembly && !InteractiveAtRoot)
5-
<Router AppAssembly="typeof(Program).Assembly" AdditionalAssemblies="new[] { typeof(Client._Imports).Assembly }">
5+
<Router AppAssembly="typeof(Program).Assembly" AdditionalAssemblies="new[] { typeof(Client._Imports).Assembly }" NotFoundPage="typeof(Pages.NotFound)">
66
##else
7-
<Router AppAssembly="typeof(Program).Assembly">
7+
<Router AppAssembly="typeof(Program).Assembly" NotFoundPage="typeof(Pages.NotFound)">
88
##endif*@
99
<Found Context="routeData">
1010
@*#if (IndividualLocalAuth)
Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
@ECHO OFF
2+
SETLOCAL
3+
4+
:: This command launches a Visual Studio solution with environment variables required to use a local version of the .NET Core SDK.
5+
6+
:: This tells .NET Core to use the same dotnet.exe that build scripts use
7+
SET DOTNET_ROOT=%~dp0\.dotnet
8+
SET DOTNET_ROOT(x86)=%~dp0\.dotnet\x86
9+
10+
:: This tells .NET Core not to go looking for .NET Core in other places
11+
SET DOTNET_MULTILEVEL_LOOKUP=0
12+
13+
:: Put our local dotnet.exe on PATH first so Visual Studio knows which one to use
14+
SET PATH=%DOTNET_ROOT%;%PATH%
15+
16+
SET sln=%~1
17+
18+
IF "%sln%"=="" (
19+
echo Error^: Expected argument ^<SLN_FILE^>
20+
echo Usage^: startvs.cmd ^<SLN_FILE^>
21+
22+
exit /b 1
23+
)
24+
25+
IF NOT EXIST "%DOTNET_ROOT%\dotnet.exe" (
26+
echo .NET Core has not yet been installed. Run `%~dp0restore.cmd` to install tools
27+
exit /b 1
28+
)
29+
30+
IF "%VSINSTALLDIR%" == "" (
31+
start "" "%sln%"
32+
) else (
33+
"%VSINSTALLDIR%\Common7\IDE\devenv.com" "%sln%"
34+
)

src/ProjectTemplates/test/Templates.Tests/template-baselines.json

Lines changed: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -533,9 +533,12 @@
533533
"Components/Layout/MainLayout.razor.css",
534534
"Components/Layout/NavMenu.razor",
535535
"Components/Layout/NavMenu.razor.css",
536+
"Components/Models/WeatherForecast.cs",
536537
"Components/Pages/Error.razor",
537538
"Components/Pages/Home.razor",
539+
"Components/Pages/NotFound.razor",
538540
"Components/Pages/Weather.razor",
541+
"Components/Pages/WeatherDetails.razor",
539542
"Components/Routes.razor",
540543
"Components/_Imports.razor",
541544
"Program.cs",
@@ -642,10 +645,13 @@
642645
"Components/Layout/MainLayout.razor.css",
643646
"Components/Layout/NavMenu.razor",
644647
"Components/Layout/NavMenu.razor.css",
648+
"Components/Models/WeatherForecast.cs",
645649
"Components/Pages/Auth.razor",
646650
"Components/Pages/Error.razor",
647651
"Components/Pages/Home.razor",
652+
"Components/Pages/NotFound.razor",
648653
"Components/Pages/Weather.razor",
654+
"Components/Pages/WeatherDetails.razor",
649655
"Components/Routes.razor",
650656
"Components/_Imports.razor",
651657
"Data/app.db",
@@ -724,10 +730,13 @@
724730
"Components/Layout/ReconnectModal.razor",
725731
"Components/Layout/ReconnectModal.razor.css",
726732
"Components/Layout/ReconnectModal.razor.js",
733+
"Components/Models/WeatherForecast.cs",
727734
"Components/Pages/Counter.razor",
728735
"Components/Pages/Error.razor",
729736
"Components/Pages/Home.razor",
737+
"Components/Pages/NotFound.razor",
730738
"Components/Pages/Weather.razor",
739+
"Components/Pages/WeatherDetails.razor",
731740
"Properties/launchSettings.json",
732741
"wwwroot/app.css",
733742
"wwwroot/favicon.png",
@@ -834,11 +843,14 @@
834843
"Components/Layout/ReconnectModal.razor",
835844
"Components/Layout/ReconnectModal.razor.css",
836845
"Components/Layout/ReconnectModal.razor.js",
846+
"Components/Models/WeatherForecast.cs",
837847
"Components/Pages/Auth.razor",
838848
"Components/Pages/Counter.razor",
839849
"Components/Pages/Error.razor",
840850
"Components/Pages/Home.razor",
851+
"Components/Pages/NotFound.razor",
841852
"Components/Pages/Weather.razor",
853+
"Components/Pages/WeatherDetails.razor",
842854
"Components/Routes.razor",
843855
"Components/_Imports.razor",
844856
"Data/app.db",
@@ -955,11 +967,14 @@
955967
"Components/Layout/ReconnectModal.razor",
956968
"Components/Layout/ReconnectModal.razor.css",
957969
"Components/Layout/ReconnectModal.razor.js",
970+
"Components/Models/WeatherForecast.cs",
958971
"Components/Pages/Auth.razor",
959972
"Components/Pages/Counter.razor",
960973
"Components/Pages/Error.razor",
961974
"Components/Pages/Home.razor",
975+
"Components/Pages/NotFound.razor",
962976
"Components/Pages/Weather.razor",
977+
"Components/Pages/WeatherDetails.razor",
963978
"Components/Routes.razor",
964979
"Components/_Imports.razor",
965980
"Data/ApplicationDbContext.cs",
@@ -1035,9 +1050,12 @@
10351050
"{ProjectName}/Components/Layout/MainLayout.razor.css",
10361051
"{ProjectName}/Components/Layout/NavMenu.razor",
10371052
"{ProjectName}/Components/Layout/NavMenu.razor.css",
1053+
"{ProjectName}/Components/Models/WeatherForecast.cs",
10381054
"{ProjectName}/Components/Pages/Error.razor",
10391055
"{ProjectName}/Components/Pages/Home.razor",
1056+
"{ProjectName}/Components/Pages/NotFound.razor",
10401057
"{ProjectName}/Components/Pages/Weather.razor",
1058+
"{ProjectName}/Components/Pages/WeatherDetails.razor",
10411059
"{ProjectName}/Properties/launchSettings.json",
10421060
"{ProjectName}/wwwroot/app.css",
10431061
"{ProjectName}/wwwroot/favicon.png",
@@ -1154,9 +1172,12 @@
11541172
"{ProjectName}/Components/Layout/MainLayout.razor.css",
11551173
"{ProjectName}/Components/Layout/NavMenu.razor",
11561174
"{ProjectName}/Components/Layout/NavMenu.razor.css",
1175+
"{ProjectName}/Components/Models/WeatherForecast.cs",
11571176
"{ProjectName}/Components/Pages/Error.razor",
11581177
"{ProjectName}/Components/Pages/Home.razor",
1178+
"{ProjectName}/Components/Pages/NotFound.razor",
11591179
"{ProjectName}/Components/Pages/Weather.razor",
1180+
"{ProjectName}/Components/Pages/WeatherDetails.razor",
11601181
"{ProjectName}/Components/Routes.razor",
11611182
"{ProjectName}/Components/_Imports.razor",
11621183
"{ProjectName}/Data/app.db",
@@ -1236,9 +1257,12 @@
12361257
"{ProjectName}/Components/Layout/ReconnectModal.razor",
12371258
"{ProjectName}/Components/Layout/ReconnectModal.razor.css",
12381259
"{ProjectName}/Components/Layout/ReconnectModal.razor.js",
1260+
"{ProjectName}/Components/Models/WeatherForecast.cs",
12391261
"{ProjectName}/Components/Pages/Error.razor",
12401262
"{ProjectName}/Components/Pages/Home.razor",
1263+
"{ProjectName}/Components/Pages/NotFound.razor",
12411264
"{ProjectName}/Components/Pages/Weather.razor",
1265+
"{ProjectName}/Components/Pages/WeatherDetails.razor",
12421266
"{ProjectName}/Properties/launchSettings.json",
12431267
"{ProjectName}/wwwroot/app.css",
12441268
"{ProjectName}/wwwroot/favicon.png",
@@ -1359,9 +1383,12 @@
13591383
"{ProjectName}/Components/Layout/ReconnectModal.razor",
13601384
"{ProjectName}/Components/Layout/ReconnectModal.razor.css",
13611385
"{ProjectName}/Components/Layout/ReconnectModal.razor.js",
1386+
"{ProjectName}/Components/Models/WeatherForecast.cs",
13621387
"{ProjectName}/Components/Pages/Error.razor",
13631388
"{ProjectName}/Components/Pages/Home.razor",
1389+
"{ProjectName}/Components/Pages/NotFound.razor",
13641390
"{ProjectName}/Components/Pages/Weather.razor",
1391+
"{ProjectName}/Components/Pages/WeatherDetails.razor",
13651392
"{ProjectName}/Components/Routes.razor",
13661393
"{ProjectName}/Components/_Imports.razor",
13671394
"{ProjectName}/Data/app.db",
@@ -1436,10 +1463,13 @@
14361463
"Components/Layout/ReconnectModal.razor",
14371464
"Components/Layout/ReconnectModal.razor.css",
14381465
"Components/Layout/ReconnectModal.razor.js",
1466+
"Components/Models/WeatherForecast.cs",
14391467
"Components/Pages/Counter.razor",
14401468
"Components/Pages/Error.razor",
14411469
"Components/Pages/Home.razor",
1470+
"Components/Pages/NotFound.razor",
14421471
"Components/Pages/Weather.razor",
1472+
"Components/Pages/WeatherDetails.razor",
14431473
"Components/Routes.razor",
14441474
"Components/_Imports.razor",
14451475
"Program.cs",
@@ -1502,9 +1532,12 @@
15021532
"{ProjectName}.Client/Layout/MainLayout.razor.css",
15031533
"{ProjectName}.Client/Layout/NavMenu.razor",
15041534
"{ProjectName}.Client/Layout/NavMenu.razor.css",
1535+
"{ProjectName}.Client/Models/WeatherForecast.cs",
15051536
"{ProjectName}.Client/Pages/Counter.razor",
15061537
"{ProjectName}.Client/Pages/Home.razor",
1538+
"{ProjectName}.Client/Pages/NotFound.razor",
15071539
"{ProjectName}.Client/Pages/Weather.razor",
1540+
"{ProjectName}.Client/Pages/WeatherDetails.razor",
15081541
"{ProjectName}.Client/Program.cs",
15091542
"{ProjectName}.Client/Routes.razor",
15101543
"{ProjectName}.Client/wwwroot/appsettings.Development.json",
@@ -1580,9 +1613,12 @@
15801613
"{ProjectName}.Client/Layout/ReconnectModal.razor",
15811614
"{ProjectName}.Client/Layout/ReconnectModal.razor.css",
15821615
"{ProjectName}.Client/Layout/ReconnectModal.razor.js",
1616+
"{ProjectName}.Client/Models/WeatherForecast.cs",
15831617
"{ProjectName}.Client/Pages/Counter.razor",
15841618
"{ProjectName}.Client/Pages/Home.razor",
1619+
"{ProjectName}.Client/Pages/NotFound.razor",
15851620
"{ProjectName}.Client/Pages/Weather.razor",
1621+
"{ProjectName}.Client/Pages/WeatherDetails.cs",
15861622
"{ProjectName}.Client/Program.cs",
15871623
"{ProjectName}.Client/Routes.razor",
15881624
"{ProjectName}.Client/wwwroot/appsettings.Development.json",
@@ -1872,11 +1908,14 @@
18721908
"Components/Layout/ReconnectModal.razor",
18731909
"Components/Layout/ReconnectModal.razor.css",
18741910
"Components/Layout/ReconnectModal.razor.js",
1911+
"Components/Models/WeatherForecast.cs",
18751912
"Components/Pages/Auth.razor",
18761913
"Components/Pages/Counter.razor",
18771914
"Components/Pages/Error.razor",
18781915
"Components/Pages/Home.razor",
1916+
"Components/Pages/NotFound.razor",
18791917
"Components/Pages/Weather.razor",
1918+
"Components/Pages/WeatherDetails.razor",
18801919
"Components/Routes.razor",
18811920
"Components/_Imports.razor",
18821921
"Data/app.db",
@@ -1946,10 +1985,13 @@
19461985
"{ProjectName}.Client/Layout/NavMenu.razor",
19471986
"{ProjectName}.Client/Layout/NavMenu.razor.css",
19481987
"{ProjectName}.Client/{ProjectName}.Client.csproj",
1988+
"{ProjectName}.Client/Models/WeatherForecast.cs",
19491989
"{ProjectName}.Client/Pages/Auth.razor",
19501990
"{ProjectName}.Client/Pages/Counter.razor",
19511991
"{ProjectName}.Client/Pages/Home.razor",
1992+
"{ProjectName}.Client/Pages/NotFound.razor",
19521993
"{ProjectName}.Client/Pages/Weather.razor",
1994+
"{ProjectName}.Client/Pages/WeatherDetails.razor",
19531995
"{ProjectName}.Client/Program.cs",
19541996
"{ProjectName}.Client/RedirectToLogin.razor",
19551997
"{ProjectName}.Client/Routes.razor",
@@ -2073,10 +2115,13 @@
20732115
"{ProjectName}.Client/Layout/ReconnectModal.razor.css",
20742116
"{ProjectName}.Client/Layout/ReconnectModal.razor.js",
20752117
"{ProjectName}.Client/{ProjectName}.Client.csproj",
2118+
"{ProjectName}.Client/Models/WeatherForecast.cs",
20762119
"{ProjectName}.Client/Pages/Auth.razor",
20772120
"{ProjectName}.Client/Pages/Counter.razor",
20782121
"{ProjectName}.Client/Pages/Home.razor",
2122+
"{ProjectName}.Client/Pages/NotFound.razor",
20792123
"{ProjectName}.Client/Pages/Weather.razor",
2124+
"{ProjectName}.Client/Pages/WeatherDetails.cs",
20802125
"{ProjectName}.Client/Program.cs",
20812126
"{ProjectName}.Client/RedirectToLogin.razor",
20822127
"{ProjectName}.Client/Routes.razor",

0 commit comments

Comments
 (0)