This commit is contained in:
parent
90ec402c8f
commit
7e385edd94
Binary file not shown.
|
@ -3,28 +3,12 @@
|
|||
"WorkspaceRootPath": "C:\\Repos\\SummerBestWebForm2\\",
|
||||
"Documents": [
|
||||
{
|
||||
"AbsoluteMoniker": "D:0:0:{10E16044-8880-42A4-866B-B0461C450A71}|SummerBestWebForm2.csproj|c:\\repos\\summerbestwebform2\\components\\pages\\test.razor||{40D31677-CBC0-4297-A9EF-89D907823A98}",
|
||||
"RelativeMoniker": "D:0:0:{10E16044-8880-42A4-866B-B0461C450A71}|SummerBestWebForm2.csproj|solutionrelative:components\\pages\\test.razor||{40D31677-CBC0-4297-A9EF-89D907823A98}"
|
||||
},
|
||||
{
|
||||
"AbsoluteMoniker": "D:0:0:{10E16044-8880-42A4-866B-B0461C450A71}|SummerBestWebForm2.csproj|c:\\repos\\summerbestwebform2\\components\\pages\\home.razor||{40D31677-CBC0-4297-A9EF-89D907823A98}",
|
||||
"RelativeMoniker": "D:0:0:{10E16044-8880-42A4-866B-B0461C450A71}|SummerBestWebForm2.csproj|solutionrelative:components\\pages\\home.razor||{40D31677-CBC0-4297-A9EF-89D907823A98}"
|
||||
"AbsoluteMoniker": "D:0:0:{10E16044-8880-42A4-866B-B0461C450A71}|SummerBestWebForm2.csproj|c:\\repos\\summerbestwebform2\\components\\pages\\error.razor||{40D31677-CBC0-4297-A9EF-89D907823A98}",
|
||||
"RelativeMoniker": "D:0:0:{10E16044-8880-42A4-866B-B0461C450A71}|SummerBestWebForm2.csproj|solutionrelative:components\\pages\\error.razor||{40D31677-CBC0-4297-A9EF-89D907823A98}"
|
||||
},
|
||||
{
|
||||
"AbsoluteMoniker": "D:0:0:{10E16044-8880-42A4-866B-B0461C450A71}|SummerBestWebForm2.csproj|c:\\repos\\summerbestwebform2\\components\\pages\\weather.razor||{40D31677-CBC0-4297-A9EF-89D907823A98}",
|
||||
"RelativeMoniker": "D:0:0:{10E16044-8880-42A4-866B-B0461C450A71}|SummerBestWebForm2.csproj|solutionrelative:components\\pages\\weather.razor||{40D31677-CBC0-4297-A9EF-89D907823A98}"
|
||||
},
|
||||
{
|
||||
"AbsoluteMoniker": "D:0:0:{10E16044-8880-42A4-866B-B0461C450A71}|SummerBestWebForm2.csproj|c:\\repos\\summerbestwebform2\\components\\app.razor||{40D31677-CBC0-4297-A9EF-89D907823A98}",
|
||||
"RelativeMoniker": "D:0:0:{10E16044-8880-42A4-866B-B0461C450A71}|SummerBestWebForm2.csproj|solutionrelative:components\\app.razor||{40D31677-CBC0-4297-A9EF-89D907823A98}"
|
||||
},
|
||||
{
|
||||
"AbsoluteMoniker": "D:0:0:{10E16044-8880-42A4-866B-B0461C450A71}|SummerBestWebForm2.csproj|c:\\repos\\summerbestwebform2\\program.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
|
||||
"RelativeMoniker": "D:0:0:{10E16044-8880-42A4-866B-B0461C450A71}|SummerBestWebForm2.csproj|solutionrelative:program.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
|
||||
},
|
||||
{
|
||||
"AbsoluteMoniker": "D:0:0:{10E16044-8880-42A4-866B-B0461C450A71}|SummerBestWebForm2.csproj|c:\\repos\\summerbestwebform2\\components\\pages\\home.razor.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
|
||||
"RelativeMoniker": "D:0:0:{10E16044-8880-42A4-866B-B0461C450A71}|SummerBestWebForm2.csproj|solutionrelative:components\\pages\\home.razor.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
|
||||
}
|
||||
],
|
||||
"DocumentGroupContainers": [
|
||||
|
@ -34,7 +18,7 @@
|
|||
"DocumentGroups": [
|
||||
{
|
||||
"DockedWidth": 200,
|
||||
"SelectedChildIndex": 16,
|
||||
"SelectedChildIndex": 12,
|
||||
"Children": [
|
||||
{
|
||||
"$type": "Bookmark",
|
||||
|
@ -80,82 +64,30 @@
|
|||
"$type": "Bookmark",
|
||||
"Name": "ST:0:0:{aa2115a1-9712-457b-9047-dbb71ca2cdd2}"
|
||||
},
|
||||
{
|
||||
"$type": "Document",
|
||||
"DocumentIndex": 3,
|
||||
"Title": "App.razor",
|
||||
"DocumentMoniker": "C:\\Repos\\SummerBestWebForm2\\Components\\App.razor",
|
||||
"RelativeDocumentMoniker": "Components\\App.razor",
|
||||
"ToolTip": "C:\\Repos\\SummerBestWebForm2\\Components\\App.razor",
|
||||
"RelativeToolTip": "Components\\App.razor",
|
||||
"ViewState": "AgIAAC0AAAAAAAAAAAAAAAAAAAAHAAAAAAAAAA==",
|
||||
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000759|",
|
||||
"WhenOpened": "2025-05-29T18:24:38.258Z",
|
||||
"EditorCaption": ""
|
||||
},
|
||||
{
|
||||
"$type": "Document",
|
||||
"DocumentIndex": 5,
|
||||
"Title": "Home.razor.cs",
|
||||
"DocumentMoniker": "C:\\Repos\\SummerBestWebForm2\\Components\\Pages\\Home.razor.cs",
|
||||
"RelativeDocumentMoniker": "Components\\Pages\\Home.razor.cs",
|
||||
"ToolTip": "C:\\Repos\\SummerBestWebForm2\\Components\\Pages\\Home.razor.cs",
|
||||
"RelativeToolTip": "Components\\Pages\\Home.razor.cs",
|
||||
"ViewState": "AgIAAAAAAAAAAAAAAAAAAAoAAAAAAAAAAAAAAA==",
|
||||
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
|
||||
"WhenOpened": "2025-05-29T18:24:42.784Z",
|
||||
"EditorCaption": ""
|
||||
},
|
||||
{
|
||||
"$type": "Document",
|
||||
"DocumentIndex": 1,
|
||||
"Title": "Home.razor",
|
||||
"DocumentMoniker": "C:\\Repos\\SummerBestWebForm2\\Components\\Pages\\Home.razor",
|
||||
"RelativeDocumentMoniker": "Components\\Pages\\Home.razor",
|
||||
"ToolTip": "C:\\Repos\\SummerBestWebForm2\\Components\\Pages\\Home.razor",
|
||||
"RelativeToolTip": "Components\\Pages\\Home.razor",
|
||||
"ViewState": "AgIAAAAAAAAAAAAAAAAAAAUAAAAAAAAAAAAAAA==",
|
||||
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000759|",
|
||||
"WhenOpened": "2025-05-29T18:25:48.345Z",
|
||||
"EditorCaption": ""
|
||||
},
|
||||
{
|
||||
"$type": "Document",
|
||||
"DocumentIndex": 4,
|
||||
"Title": "Program.cs",
|
||||
"DocumentMoniker": "C:\\Repos\\SummerBestWebForm2\\Program.cs",
|
||||
"RelativeDocumentMoniker": "Program.cs",
|
||||
"ToolTip": "C:\\Repos\\SummerBestWebForm2\\Program.cs",
|
||||
"RelativeToolTip": "Program.cs",
|
||||
"ViewState": "AgIAAAAAAAAAAAAAAAAAAAEAAAAiAAAAAAAAAA==",
|
||||
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
|
||||
"WhenOpened": "2025-05-29T18:26:18.113Z",
|
||||
"EditorCaption": ""
|
||||
},
|
||||
{
|
||||
"$type": "Document",
|
||||
"DocumentIndex": 2,
|
||||
"Title": "Weather.razor",
|
||||
"DocumentMoniker": "C:\\Repos\\SummerBestWebForm2\\Components\\Pages\\Weather.razor",
|
||||
"RelativeDocumentMoniker": "Components\\Pages\\Weather.razor",
|
||||
"ToolTip": "C:\\Repos\\SummerBestWebForm2\\Components\\Pages\\Weather.razor",
|
||||
"RelativeToolTip": "Components\\Pages\\Weather.razor",
|
||||
"ViewState": "AgIAAAAAAAAAAAAAAAAAABQAAAAgAAAAAAAAAA==",
|
||||
"ViewState": "AgIAAAwAAAAAAAAAAAAAADwAAAAkAAAAAAAAAA==",
|
||||
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000759|",
|
||||
"WhenOpened": "2025-05-29T18:28:11.235Z",
|
||||
"WhenOpened": "2025-05-30T07:56:59.41Z",
|
||||
"EditorCaption": ""
|
||||
},
|
||||
{
|
||||
"$type": "Document",
|
||||
"DocumentIndex": 0,
|
||||
"Title": "Test.razor",
|
||||
"DocumentMoniker": "C:\\Repos\\SummerBestWebForm2\\Components\\Pages\\Test.razor",
|
||||
"RelativeDocumentMoniker": "Components\\Pages\\Test.razor",
|
||||
"ToolTip": "C:\\Repos\\SummerBestWebForm2\\Components\\Pages\\Test.razor",
|
||||
"RelativeToolTip": "Components\\Pages\\Test.razor",
|
||||
"ViewState": "AgIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA==",
|
||||
"Title": "Error.razor",
|
||||
"DocumentMoniker": "C:\\Repos\\SummerBestWebForm2\\Components\\Pages\\Error.razor",
|
||||
"RelativeDocumentMoniker": "Components\\Pages\\Error.razor",
|
||||
"ToolTip": "C:\\Repos\\SummerBestWebForm2\\Components\\Pages\\Error.razor",
|
||||
"RelativeToolTip": "Components\\Pages\\Error.razor",
|
||||
"ViewState": "AgIAAAAAAAAAAAAAAAAAAB8AAABBAAAAAAAAAA==",
|
||||
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000759|",
|
||||
"WhenOpened": "2025-05-29T18:28:44.014Z",
|
||||
"WhenOpened": "2025-05-30T07:57:59.014Z",
|
||||
"EditorCaption": ""
|
||||
}
|
||||
]
|
||||
|
|
|
@ -3,24 +3,12 @@
|
|||
"WorkspaceRootPath": "C:\\Repos\\SummerBestWebForm2\\",
|
||||
"Documents": [
|
||||
{
|
||||
"AbsoluteMoniker": "D:0:0:{10E16044-8880-42A4-866B-B0461C450A71}|SummerBestWebForm2.csproj|c:\\repos\\summerbestwebform2\\components\\pages\\home.razor||{40D31677-CBC0-4297-A9EF-89D907823A98}",
|
||||
"RelativeMoniker": "D:0:0:{10E16044-8880-42A4-866B-B0461C450A71}|SummerBestWebForm2.csproj|solutionrelative:components\\pages\\home.razor||{40D31677-CBC0-4297-A9EF-89D907823A98}"
|
||||
"AbsoluteMoniker": "D:0:0:{10E16044-8880-42A4-866B-B0461C450A71}|SummerBestWebForm2.csproj|c:\\repos\\summerbestwebform2\\components\\ipaddressgrabber.razor||{40D31677-CBC0-4297-A9EF-89D907823A98}",
|
||||
"RelativeMoniker": "D:0:0:{10E16044-8880-42A4-866B-B0461C450A71}|SummerBestWebForm2.csproj|solutionrelative:components\\ipaddressgrabber.razor||{40D31677-CBC0-4297-A9EF-89D907823A98}"
|
||||
},
|
||||
{
|
||||
"AbsoluteMoniker": "D:0:0:{10E16044-8880-42A4-866B-B0461C450A71}|SummerBestWebForm2.csproj|c:\\repos\\summerbestwebform2\\components\\pages\\weather.razor||{40D31677-CBC0-4297-A9EF-89D907823A98}",
|
||||
"RelativeMoniker": "D:0:0:{10E16044-8880-42A4-866B-B0461C450A71}|SummerBestWebForm2.csproj|solutionrelative:components\\pages\\weather.razor||{40D31677-CBC0-4297-A9EF-89D907823A98}"
|
||||
},
|
||||
{
|
||||
"AbsoluteMoniker": "D:0:0:{10E16044-8880-42A4-866B-B0461C450A71}|SummerBestWebForm2.csproj|c:\\repos\\summerbestwebform2\\components\\app.razor||{40D31677-CBC0-4297-A9EF-89D907823A98}",
|
||||
"RelativeMoniker": "D:0:0:{10E16044-8880-42A4-866B-B0461C450A71}|SummerBestWebForm2.csproj|solutionrelative:components\\app.razor||{40D31677-CBC0-4297-A9EF-89D907823A98}"
|
||||
},
|
||||
{
|
||||
"AbsoluteMoniker": "D:0:0:{10E16044-8880-42A4-866B-B0461C450A71}|SummerBestWebForm2.csproj|c:\\repos\\summerbestwebform2\\program.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
|
||||
"RelativeMoniker": "D:0:0:{10E16044-8880-42A4-866B-B0461C450A71}|SummerBestWebForm2.csproj|solutionrelative:program.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
|
||||
},
|
||||
{
|
||||
"AbsoluteMoniker": "D:0:0:{10E16044-8880-42A4-866B-B0461C450A71}|SummerBestWebForm2.csproj|c:\\repos\\summerbestwebform2\\components\\pages\\home.razor.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
|
||||
"RelativeMoniker": "D:0:0:{10E16044-8880-42A4-866B-B0461C450A71}|SummerBestWebForm2.csproj|solutionrelative:components\\pages\\home.razor.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
|
||||
}
|
||||
],
|
||||
"DocumentGroupContainers": [
|
||||
|
@ -30,7 +18,7 @@
|
|||
"DocumentGroups": [
|
||||
{
|
||||
"DockedWidth": 200,
|
||||
"SelectedChildIndex": 13,
|
||||
"SelectedChildIndex": 12,
|
||||
"Children": [
|
||||
{
|
||||
"$type": "Bookmark",
|
||||
|
@ -76,58 +64,6 @@
|
|||
"$type": "Bookmark",
|
||||
"Name": "ST:0:0:{aa2115a1-9712-457b-9047-dbb71ca2cdd2}"
|
||||
},
|
||||
{
|
||||
"$type": "Document",
|
||||
"DocumentIndex": 2,
|
||||
"Title": "App.razor",
|
||||
"DocumentMoniker": "C:\\Repos\\SummerBestWebForm2\\Components\\App.razor",
|
||||
"RelativeDocumentMoniker": "Components\\App.razor",
|
||||
"ToolTip": "C:\\Repos\\SummerBestWebForm2\\Components\\App.razor",
|
||||
"RelativeToolTip": "Components\\App.razor",
|
||||
"ViewState": "AgIAAC0AAAAAAAAAAAAAAAAAAAAHAAAAAAAAAA==",
|
||||
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000759|",
|
||||
"WhenOpened": "2025-05-29T18:24:38.258Z",
|
||||
"EditorCaption": ""
|
||||
},
|
||||
{
|
||||
"$type": "Document",
|
||||
"DocumentIndex": 4,
|
||||
"Title": "Home.razor.cs",
|
||||
"DocumentMoniker": "C:\\Repos\\SummerBestWebForm2\\Components\\Pages\\Home.razor.cs",
|
||||
"RelativeDocumentMoniker": "Components\\Pages\\Home.razor.cs",
|
||||
"ToolTip": "C:\\Repos\\SummerBestWebForm2\\Components\\Pages\\Home.razor.cs",
|
||||
"RelativeToolTip": "Components\\Pages\\Home.razor.cs",
|
||||
"ViewState": "AgIAAAAAAAAAAAAAAAAAAAoAAAAAAAAAAAAAAA==",
|
||||
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
|
||||
"WhenOpened": "2025-05-29T18:24:42.784Z",
|
||||
"EditorCaption": ""
|
||||
},
|
||||
{
|
||||
"$type": "Document",
|
||||
"DocumentIndex": 0,
|
||||
"Title": "Home.razor",
|
||||
"DocumentMoniker": "C:\\Repos\\SummerBestWebForm2\\Components\\Pages\\Home.razor",
|
||||
"RelativeDocumentMoniker": "Components\\Pages\\Home.razor",
|
||||
"ToolTip": "C:\\Repos\\SummerBestWebForm2\\Components\\Pages\\Home.razor",
|
||||
"RelativeToolTip": "Components\\Pages\\Home.razor",
|
||||
"ViewState": "AgIAAAAAAAAAAAAAAAAAAAUAAAAAAAAAAAAAAA==",
|
||||
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000759|",
|
||||
"WhenOpened": "2025-05-29T18:25:48.345Z",
|
||||
"EditorCaption": ""
|
||||
},
|
||||
{
|
||||
"$type": "Document",
|
||||
"DocumentIndex": 3,
|
||||
"Title": "Program.cs",
|
||||
"DocumentMoniker": "C:\\Repos\\SummerBestWebForm2\\Program.cs",
|
||||
"RelativeDocumentMoniker": "Program.cs",
|
||||
"ToolTip": "C:\\Repos\\SummerBestWebForm2\\Program.cs",
|
||||
"RelativeToolTip": "Program.cs",
|
||||
"ViewState": "AgIAAAAAAAAAAAAAAAAAAAEAAAAiAAAAAAAAAA==",
|
||||
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
|
||||
"WhenOpened": "2025-05-29T18:26:18.113Z",
|
||||
"EditorCaption": ""
|
||||
},
|
||||
{
|
||||
"$type": "Document",
|
||||
"DocumentIndex": 1,
|
||||
|
@ -136,9 +72,22 @@
|
|||
"RelativeDocumentMoniker": "Components\\Pages\\Weather.razor",
|
||||
"ToolTip": "C:\\Repos\\SummerBestWebForm2\\Components\\Pages\\Weather.razor",
|
||||
"RelativeToolTip": "Components\\Pages\\Weather.razor",
|
||||
"ViewState": "AgIAAAAAAAAAAAAAAAAAABQAAAAgAAAAAAAAAA==",
|
||||
"ViewState": "AgIAAAwAAAAAAAAAAAAAADwAAAAkAAAAAAAAAA==",
|
||||
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000759|",
|
||||
"WhenOpened": "2025-05-29T18:28:11.235Z",
|
||||
"WhenOpened": "2025-05-30T07:56:59.41Z",
|
||||
"EditorCaption": ""
|
||||
},
|
||||
{
|
||||
"$type": "Document",
|
||||
"DocumentIndex": 0,
|
||||
"Title": "IPAddressGrabber.razor",
|
||||
"DocumentMoniker": "C:\\Repos\\SummerBestWebForm2\\Components\\IPAddressGrabber.razor",
|
||||
"RelativeDocumentMoniker": "Components\\IPAddressGrabber.razor",
|
||||
"ToolTip": "C:\\Repos\\SummerBestWebForm2\\Components\\IPAddressGrabber.razor",
|
||||
"RelativeToolTip": "Components\\IPAddressGrabber.razor",
|
||||
"ViewState": "AgIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA==",
|
||||
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000759|",
|
||||
"WhenOpened": "2025-05-30T07:58:10.038Z",
|
||||
"EditorCaption": ""
|
||||
}
|
||||
]
|
||||
|
|
|
@ -0,0 +1,8 @@
|
|||
namespace SummerBestWebForm2.ClassObj;
|
||||
|
||||
public class IPAddressService
|
||||
{
|
||||
public const string TokenName = "IPAddress";
|
||||
|
||||
public string RemoteIpAddress { get; set; } = "Not Set";
|
||||
}
|
|
@ -1,4 +1,5 @@
|
|||
<!DOCTYPE html>
|
||||
@implements IDisposable
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
|
||||
<head>
|
||||
|
@ -29,14 +30,16 @@
|
|||
min-height: 100vh;
|
||||
}
|
||||
</style>
|
||||
<HeadOutlet @rendermode="@(new InteractiveServerRenderMode(false))" />
|
||||
@* <HeadOutlet @rendermode="@(new InteractiveServerRenderMode(false))" /> *@
|
||||
<HeadOutlet @rendermode="InteractiveServer" />
|
||||
<link rel="stylesheet" href="https://blazor.cdn.telerik.com/blazor/6.2.0/kendo-theme-bootstrap/swatches/bootstrap-urban.css" />
|
||||
<script src="https://blazor.cdn.telerik.com/blazor/6.2.0/telerik-blazor.min.js" defer></script>
|
||||
</head>
|
||||
|
||||
<body>
|
||||
<!-- Turn off pre-rendering -->
|
||||
<Routes @rendermode="@(new InteractiveServerRenderMode(false))" />
|
||||
@* <Routes @rendermode="@(new InteractiveServerRenderMode(false))" /> *@
|
||||
<Routes @rendermode="InteractiveServer" />
|
||||
<script src="_framework/blazor.web.js"></script>
|
||||
<script src="https://cdnjs.cloudflare.com/ajax/libs/bootstrap/5.3.3/js/bootstrap.bundle.min.js" integrity="sha512-7Pi/otdlbbCR+LnW+F7PwFcSDJOuUJB3OxtEHbg4vSMvzvJjde4Po1v4BR9Gdc9aXNUNFVUY+SK51wWT8WF0Gg==" crossorigin="anonymous" referrerpolicy="no-referrer"></script>
|
||||
<script src="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.5.2/js/all.min.js" integrity="sha512-u3fPA7V8qQmhBPNT5quvaXVa1mnnLSXUep5PS1qo5NRzHwG19aHmNJnj1Q8hpA/nBWZtZD4r4AX6YOt5ynLN2g==" crossorigin="anonymous" referrerpolicy="no-referrer"></script>
|
||||
|
@ -89,5 +92,32 @@
|
|||
@code {
|
||||
[CascadingParameter]
|
||||
public CascadingAppState appState { get; set; }
|
||||
|
||||
#region "IPADDR"
|
||||
[CascadingParameter] HttpContext? HttpContext { get; set; }
|
||||
[Inject] public PersistentComponentState ApplicationState { get; set; } = default!;
|
||||
|
||||
private PersistingComponentStateSubscription? _persistingSubscription;
|
||||
private bool _subsequentRender;
|
||||
private string RemoteIpAddress = "Not Set";
|
||||
|
||||
protected override void OnInitialized()
|
||||
{
|
||||
this.RemoteIpAddress = this.HttpContext?.Connection.RemoteIpAddress?.ToString() ?? "Not Set";
|
||||
_persistingSubscription = ApplicationState.RegisterOnPersisting(this.PersistData);
|
||||
}
|
||||
|
||||
public Task PersistData()
|
||||
{
|
||||
this.ApplicationState.PersistAsJson<string>(ClassObj.IPAddressService.TokenName, this.RemoteIpAddress);
|
||||
return Task.CompletedTask;
|
||||
}
|
||||
|
||||
void IDisposable.Dispose()
|
||||
{
|
||||
_persistingSubscription?.Dispose();
|
||||
}
|
||||
#endregion
|
||||
|
||||
private string errMsg = string.Empty;
|
||||
}
|
||||
|
|
|
@ -0,0 +1,28 @@
|
|||
@using ClassObj
|
||||
<h3>IPAddressGrabber</h3>
|
||||
|
||||
@code {
|
||||
[Inject] public IPAddressService IPAddressService { get; set; } = default!;
|
||||
[Inject] public PersistentComponentState ApplicationState { get; set; } = default!;
|
||||
|
||||
private bool _subsequentRender;
|
||||
private const string TokenName = "IPAddress";
|
||||
private string RemoteIpAddress = "Not Set";
|
||||
|
||||
// Short circuit all the lifecycle stuff - we don't need it
|
||||
public override Task SetParametersAsync(ParameterView parameters)
|
||||
{
|
||||
if (_subsequentRender)
|
||||
return Task.CompletedTask;
|
||||
|
||||
// if not prerender, try and get the persisted value
|
||||
if (this.ApplicationState.TryTakeFromJson<string>(IPAddressService.TokenName, out var address))
|
||||
{
|
||||
this.RemoteIpAddress = address ?? "Not Set";
|
||||
this.IPAddressService.RemoteIpAddress = this.RemoteIpAddress;
|
||||
}
|
||||
|
||||
_subsequentRender = true;
|
||||
return Task.CompletedTask;
|
||||
}
|
||||
}
|
|
@ -8,29 +8,29 @@
|
|||
|
||||
@if (ShowRequestId)
|
||||
{
|
||||
<p>
|
||||
<strong>Request ID:</strong> <code>@RequestId</code>
|
||||
</p>
|
||||
<p>
|
||||
<strong>Request ID:</strong> <code>@RequestId</code>
|
||||
</p>
|
||||
}
|
||||
|
||||
<h3>Development Mode</h3>
|
||||
<p>
|
||||
Swapping to <strong>Development</strong> environment will display more detailed information about the error that occurred.
|
||||
Swapping to <strong>Development</strong> environment will display more detailed information about the error that occurred.
|
||||
</p>
|
||||
<p>
|
||||
<strong>The Development environment shouldn't be enabled for deployed applications.</strong>
|
||||
It can result in displaying sensitive information from exceptions to end users.
|
||||
For local debugging, enable the <strong>Development</strong> environment by setting the <strong>ASPNETCORE_ENVIRONMENT</strong> environment variable to <strong>Development</strong>
|
||||
and restarting the app.
|
||||
<strong>The Development environment shouldn't be enabled for deployed applications.</strong>
|
||||
It can result in displaying sensitive information from exceptions to end users.
|
||||
For local debugging, enable the <strong>Development</strong> environment by setting the <strong>ASPNETCORE_ENVIRONMENT</strong> environment variable to <strong>Development</strong>
|
||||
and restarting the app.
|
||||
</p>
|
||||
|
||||
@code{
|
||||
[CascadingParameter]
|
||||
private HttpContext? HttpContext { get; set; }
|
||||
@code {
|
||||
[CascadingParameter]
|
||||
private HttpContext? HttpContext { get; set; }
|
||||
|
||||
private string? RequestId { get; set; }
|
||||
private bool ShowRequestId => !string.IsNullOrEmpty(RequestId);
|
||||
private string? RequestId { get; set; }
|
||||
private bool ShowRequestId => !string.IsNullOrEmpty(RequestId);
|
||||
|
||||
protected override void OnInitialized() =>
|
||||
RequestId = Activity.Current?.Id ?? HttpContext?.TraceIdentifier;
|
||||
protected override void OnInitialized() =>
|
||||
RequestId = Activity.Current?.Id ?? HttpContext?.TraceIdentifier;
|
||||
}
|
||||
|
|
|
@ -1,5 +1,6 @@
|
|||
@rendermode InteractiveServer
|
||||
@inject PersistentComponentState ApplicationState
|
||||
@inject ClassObj.IPAddressService IpAddressService
|
||||
@page "/"
|
||||
|
||||
<PageTitle>Welcome</PageTitle>
|
||||
|
@ -520,5 +521,6 @@ else
|
|||
DateCreated: @appState.DateCreated
|
||||
DateExpires: @appState.DateExpires
|
||||
IPAddress: @appState.myIpAddress
|
||||
IPAddress2: @(IpAddressService.RemoteIpAddress.ToString())
|
||||
</pre>
|
||||
}
|
||||
|
|
|
@ -8,13 +8,17 @@ using System.Net.Http;
|
|||
using System.Text.Json;
|
||||
using Microsoft.Extensions.Options;
|
||||
using SummerBestWebForm2.AppState;
|
||||
using SummerBestWebForm2.ClassObj;
|
||||
|
||||
namespace SummerBestWebForm2.Components.Pages;
|
||||
|
||||
public partial class Home
|
||||
{
|
||||
[CascadingParameter]
|
||||
public CascadingAppState appState { get; set; }
|
||||
public CascadingAppState appState { get; set; } = default!;
|
||||
|
||||
//[Inject] IPAddressService IpAddressService { get; set; } = default!;
|
||||
|
||||
|
||||
async Task OnFinishHandler()
|
||||
//private void SaveIt()
|
||||
|
@ -159,7 +163,7 @@ public partial class Home
|
|||
public bool? IsDesignChoiceValid { get; set; } = false;
|
||||
|
||||
[CascadingParameter]
|
||||
public DialogFactory Dialogs { get; set; }
|
||||
public DialogFactory Dialogs { get; set; } = default!;
|
||||
|
||||
public bool ShowWizard { get; set; } = true;
|
||||
|
||||
|
|
|
@ -8,56 +8,56 @@
|
|||
|
||||
@if (forecasts == null)
|
||||
{
|
||||
<p><em>Loading...</em></p>
|
||||
<p><em>Loading...</em></p>
|
||||
}
|
||||
else
|
||||
{
|
||||
<table class="table">
|
||||
<thead>
|
||||
<tr>
|
||||
<th>Date</th>
|
||||
<th>Temp. (C)</th>
|
||||
<th>Temp. (F)</th>
|
||||
<th>Summary</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
@foreach (var forecast in forecasts)
|
||||
{
|
||||
<tr>
|
||||
<td>@forecast.Date.ToShortDateString()</td>
|
||||
<td>@forecast.TemperatureC</td>
|
||||
<td>@forecast.TemperatureF</td>
|
||||
<td>@forecast.Summary</td>
|
||||
</tr>
|
||||
}
|
||||
</tbody>
|
||||
</table>
|
||||
<table class="table">
|
||||
<thead>
|
||||
<tr>
|
||||
<th>Date</th>
|
||||
<th>Temp. (C)</th>
|
||||
<th>Temp. (F)</th>
|
||||
<th>Summary</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
@foreach (var forecast in forecasts)
|
||||
{
|
||||
<tr>
|
||||
<td>@forecast.Date.ToShortDateString()</td>
|
||||
<td>@forecast.TemperatureC</td>
|
||||
<td>@forecast.TemperatureF</td>
|
||||
<td>@forecast.Summary</td>
|
||||
</tr>
|
||||
}
|
||||
</tbody>
|
||||
</table>
|
||||
}
|
||||
|
||||
@code {
|
||||
private WeatherForecast[]? forecasts;
|
||||
private WeatherForecast[]? forecasts;
|
||||
|
||||
protected override async Task OnInitializedAsync()
|
||||
{
|
||||
// Simulate asynchronous loading to demonstrate a loading indicator
|
||||
await Task.Delay(500);
|
||||
protected override async Task OnInitializedAsync()
|
||||
{
|
||||
// Simulate asynchronous loading to demonstrate a loading indicator
|
||||
await Task.Delay(500);
|
||||
|
||||
var startDate = DateOnly.FromDateTime(DateTime.Now);
|
||||
var summaries = new[] { "Freezing", "Bracing", "Chilly", "Cool", "Mild", "Warm", "Balmy", "Hot", "Sweltering", "Scorching" };
|
||||
forecasts = Enumerable.Range(1, 5).Select(index => new WeatherForecast
|
||||
{
|
||||
Date = startDate.AddDays(index),
|
||||
TemperatureC = Random.Shared.Next(-20, 55),
|
||||
Summary = summaries[Random.Shared.Next(summaries.Length)]
|
||||
}).ToArray();
|
||||
}
|
||||
var startDate = DateOnly.FromDateTime(DateTime.Now);
|
||||
var summaries = new[] { "Freezing", "Bracing", "Chilly", "Cool", "Mild", "Warm", "Balmy", "Hot", "Sweltering", "Scorching" };
|
||||
forecasts = Enumerable.Range(1, 5).Select(index => new WeatherForecast
|
||||
{
|
||||
Date = startDate.AddDays(index),
|
||||
TemperatureC = Random.Shared.Next(-20, 55),
|
||||
Summary = summaries[Random.Shared.Next(summaries.Length)]
|
||||
}).ToArray();
|
||||
}
|
||||
|
||||
private class WeatherForecast
|
||||
{
|
||||
public DateOnly Date { get; set; }
|
||||
public int TemperatureC { get; set; }
|
||||
public string? Summary { get; set; }
|
||||
public int TemperatureF => 32 + (int)(TemperatureC / 0.5556);
|
||||
}
|
||||
private class WeatherForecast
|
||||
{
|
||||
public DateOnly Date { get; set; }
|
||||
public int TemperatureC { get; set; }
|
||||
public string? Summary { get; set; }
|
||||
public int TemperatureF => 32 + (int)(TemperatureC / 0.5556);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
<!-- Wrap the router in a cascading app state -->
|
||||
<IPAddressGrabber />
|
||||
<CascadingAppState>
|
||||
<Router AppAssembly="typeof(Program).Assembly">
|
||||
<Found Context="routeData">
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
using Microsoft.AspNetCore.ResponseCompression;
|
||||
using SummerBestWebForm2.ClassObj;
|
||||
using SummerBestWebForm2.Components;
|
||||
using System.IO.Compression;
|
||||
|
||||
|
@ -32,6 +33,7 @@ namespace SummerBestWebForm2
|
|||
|
||||
builder.Services.AddHttpContextAccessor();
|
||||
builder.Services.AddScoped<HttpContextAccessor>();
|
||||
builder.Services.AddScoped<IPAddressService>(); // IPADDR
|
||||
|
||||
var app = builder.Build();
|
||||
|
||||
|
|
|
@ -14,7 +14,7 @@ using System.Reflection;
|
|||
[assembly: System.Reflection.AssemblyCompanyAttribute("SummerBestWebForm2")]
|
||||
[assembly: System.Reflection.AssemblyConfigurationAttribute("Debug")]
|
||||
[assembly: System.Reflection.AssemblyFileVersionAttribute("1.0.0.0")]
|
||||
[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0+8490ef01857e10ece7d6fd766ad123c5a53a024f")]
|
||||
[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0+90ec402c8f209ea928327a0151975a536bd86dd1")]
|
||||
[assembly: System.Reflection.AssemblyProductAttribute("SummerBestWebForm2")]
|
||||
[assembly: System.Reflection.AssemblyTitleAttribute("SummerBestWebForm2")]
|
||||
[assembly: System.Reflection.AssemblyVersionAttribute("1.0.0.0")]
|
||||
|
|
|
@ -1 +1 @@
|
|||
2de27890b60d31f362d1cf2d47078e797ede6fcf6283df998427d26b7d368448
|
||||
693802ef0a848d3bf856626462ce9d619e0d8f7d05d5669a9af2d1e415ade510
|
||||
|
|
|
@ -28,6 +28,10 @@ build_metadata.AdditionalFiles.CssScope =
|
|||
build_metadata.AdditionalFiles.TargetPath = Q29tcG9uZW50c1xBcHAucmF6b3I=
|
||||
build_metadata.AdditionalFiles.CssScope =
|
||||
|
||||
[C:/Repos/SummerBestWebForm2/Components/IPAddressGrabber.razor]
|
||||
build_metadata.AdditionalFiles.TargetPath = Q29tcG9uZW50c1xJUEFkZHJlc3NHcmFiYmVyLnJhem9y
|
||||
build_metadata.AdditionalFiles.CssScope =
|
||||
|
||||
[C:/Repos/SummerBestWebForm2/Components/Pages/Counter.razor]
|
||||
build_metadata.AdditionalFiles.TargetPath = Q29tcG9uZW50c1xQYWdlc1xDb3VudGVyLnJhem9y
|
||||
build_metadata.AdditionalFiles.CssScope =
|
||||
|
|
Loading…
Reference in New Issue