.net maui blazor路由和導航,傳參,刷新

.net maui blazor路由和導航,傳參,刷新
參考:https://learn.microsoft.com/zh-cn/aspnet/core/blazor/fundamentals/routing?view=aspnetcore-8.0
頁面:TestPage1.razor:
@page "/test1/{Text}"
<p>必填參數:@Text</p>
@code {
[Parameter]
public string? Text { get; set; }
}

可選參數@page "/test1/{Text?}"
給參數設置默認值
protected override void OnParametersSet()
{
Text = Text ?? "fantastic";
}
使用 OnInitialized{Async} 方法而不是 OnParametersSet 方法時,如果用戶在同一組件內導航,則不會發生屬性 Text 向 fantastic 的默認分配。
例如,當用戶從 /route-parameter-2/amazing 導航到 /route-parameter-2 時,就會出現這種情況。
隨着組件實例持久保存並接受新參數,便不會再次調用 OnInitialized 方法。

路由約束
路由約束強制在路由段和組件之間進行類型匹配。
在以下示例中,到 User 組件的路由僅在以下情況下匹配:
請求 URL 中存在 Id 路由段。
Id 段是一個整數 (int) 類型。
@page "/user/{Id:int}"
<p>User Id: @Id</p>
@code {
[Parameter]
public int Id { get; set; }
}

約束,示例,匹配項示例,固定條件區域性匹配
bool {active:bool} true,FALSE 否
datetime {dob:datetime} 2016-12-31,2016-12-31 7:32pm 是
decimal {price:decimal} 49.99,-1,000.01 是
double {weight:double} 1.234,-1,001.01e8 是
float {weight:float} 1.234,-1,001.01e8 是
guid {id:guid} CD2C1638-1638-72D5-1638-DEADBEEF1638,{CD2C1638-1638-72D5-1638-DEADBEEF1638} 否
int {id:int} 123456789,-123456789 是
long {ticks:long} 123456789,-123456789 是

//刷新頁面
可以通過調用 NavigationManager.Refresh(bool forceLoad = false) 來刷新當前頁,它會始終執行增強型導航(如果可用)。 如果增強型導航不可用,Blazor 將執行整頁重載。
默認啓用增強型導航,但可使用 data-enhance-nav HTML 屬性按每個鏈接進行分層控制。
以下示例禁用增強型導航:
<a href="redirect" data-enhance-nav="false">
GET without enhanced navigation
</a>
<ul data-enhance-nav="false">
<li>
<a href="redirect">GET without enhanced navigation</a>
</li>
<li>
<a href="redirect-2">GET without enhanced navigation</a>
</li>
</ul>
若要啓用增強的表單處理,請將 Enhance 參數添加到 EditForm 表單或將 data-enhance 屬性添加到 HTML 表單(<form>)
增強的表單處理不是分層的,也不會傳輸到子表單。
不支持:無法在上級元素上設置增強型導航來爲表單啓用增強型導航。

查詢字符串
使用 [SupplyParameterFromQuery] 屬性指定組件參數來自查詢字符串。
查詢字符串提供的組件參數支持以下類型:
bool,DateTime,decimal,double,float,Guid,int,long,string。
上述類型的可爲空變體。
上述類型的數組,無論它們是可爲空還是不可爲空。
正確的區域性固定格式設置適用於給定類型 (CultureInfo.InvariantCulture)。

指定 [SupplyParameterFromQuery] 屬性的 Name 屬性以使用不同於組件參數名稱的查詢參數名稱。
在使用 /search?filter=scifi%20stars&page=3&star=LeVar%20Burton&star=Gary%20Oldman URL 的以下示例中:
Filter 屬性解析爲 scifi stars。
Page 屬性解析爲 3。
Stars 數組是從名爲 star (Name = "star") 的查詢參數填充的,並解析爲 LeVar Burton 和 Gary Oldman。
@code {
[SupplyParameterFromQuery]
public string? Filter { get; set; }

[SupplyParameterFromQuery]
public int? Page { get; set; }

[SupplyParameterFromQuery(Name = "star")]
public string[]? Stars { get; set; }
}

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章