.NET6 Blazor体验 -> 1. 项目结构探索并添加新页面

一.新建一个Blazor WebAssembly项目

 

新建项目如下:

 

二.项目自带文件介绍

1.MS c#程序老规矩,先进Program.cs

a.首先引用类库

b.然后接收参数args,并创建一个builder

c.builder中添加了一个App的控件

d.builder中添加了一个HeadOutlet的控件(MS Core包里面的控件,先不用理会)

c. builder.Services.AddScoped,最后是老朋友依赖注入

d.异步启动程序,到此Program完结

2. App.razor 在Program中引用过,结果如下 

 看名字想是路由 分两部分,Found和NotFound

a.Found中注册了一个的路由,路由指向MainLayout,带了一个参数@routeData

b.NotFound中注册了一个页面,显示Sorry,there‘s nothing at this address

3.MainLayout.razor,在App.razor中按F12发现Shared文件夹中就有MainLayout.razor

 

 

 MainLayout 中两部分,一部分是div,一部分是main

a. div中引用了NavMenu的控件

b.main中写死了一个Link,再组合了一个article,显示@Body的内容

4.NavMenu.razor。再进去看看NavMenu的内容

 

 

 三部分两个div,一个@code

a.第一个div可以明显看出来有我们项目名BlazorApp1,这里应该是网站名称了

b. 第二个div明显看到注册了菜单名和其对应路径

     <NavLink class="nav-link" href="counter">
                <span class="oi oi-plus" aria-hidden="true"></span> Counter
            </NavLink>

c.第三部分@code 写的是C#代码,切换菜单用的 

4.counter.razor 跟随第二个菜单,我们看看counter里面写了什么,此文件在page文件夹

 

a.第一行就注册了一个路径 /counter 这里和之前菜单的href对应上了,看来在菜单栏中配置路径相同就能相应打开页面

b.引入了一个.net core 控件<PageTitle>,从名字看就是title了

c.写了一些HTML代码和一些C#指令(@开头)

c.@Code 里面包含了C#代码,和MVC页面区别类似,只是把JS代码为C#

5.运行一下,成功

 

 6.新建一个页面Test

这里可以将cs,css代码隔离出来,方法是新建一个文件叫XXX.razor.cs/css

 

namespace BlazorApp1.Pages
{

    public partial class Test
    {
        private bool _isShow { get; set; } = false;
        public string BindType { get; set; } = "single";
        private void IsShow()
        {
            
            Console.WriteLine(BindType);
            BindType = BindType == "single"?"cycle": "single";
            listTestEntity.Add(new TestEntity
            {
                id = (int)Math.Round(100.0),
                T1 = "Test"
            });

            _isShow = !_isShow;

        }
        private List<TestEntity> listTestEntity { get; set; } = new List<TestEntity>();

        private class TestEntity
        {


            public int id { get; set; }
            public string? T1 { get; set; }
        }
    }
}

 cs文件中定义了isShow表示table是否显示,一个方法控制table显示,并在listTestENtity中插入数据,一个entity:table内容

@page "/Test"
<PageTitle>Test</PageTitle>


<h3>Test</h3>

<input value="@BindType" @onchange="(e)=>setBindType(e?.Value?.ToString())" />
<input value="@BindType" />
<button class="btn btn-primary" @onclick="IsShow">TestButton</button>

<br />
@if (_isShow)
{
    <table>
        <tr>
            <td>id</td>
            <td>Col1</td>
        </tr>
        @foreach (var item in listTestEntity)
        {
            <tr>
                <td>@item.id.ToString()</td>
                <td>@item.T1?.ToString()</td>
            </tr>
        }
    </table>    
}
else
{
    <span>have no data</span>
}

@code {
    private void setBindType(string? value)
    {
        BindType = value;
    }

}

razor文件中@Page指令表示其路径,创建两个input测试单项绑定还是双向,创建一个button,click方法调用cs中的IsShow来控制table的显示,最后将table显示出来

最后别忘了在NavMenu.razor中注册菜单

运行

 

再点

 

成功 

最后验证结论: Blazor中的数据绑定和React类似,单项绑定,如果要从页面改数据,需要用change 等事件

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
ASP.NET Core Blazor Server 应用程序可以使用 ASP.NET Core 身份验证来实现登录认证和权限控制。以下是实现此功能的基本步骤: 1. 在 Startup.cs 文件的 ConfigureServices 方法中添加身份验证和授权服务: ``` services.AddAuthentication(CookieAuthenticationDefaults.AuthenticationScheme) .AddCookie(options => { options.LoginPath = "/Login"; options.LogoutPath = "/Logout"; }); services.AddAuthorization(options => { options.AddPolicy("AdminOnly", policy => policy.RequireRole("Admin")); }); ``` 2. 在 Configure 方法中启用身份验证和授权中间件: ``` app.UseAuthentication(); app.UseAuthorization(); ``` 3. 在需要身份验证和授权的页面或组件上使用 AuthorizeView 组件: ``` <AuthorizeView Policy="AdminOnly"> <Authorized> <!-- 显示受保护的内容 --> </Authorized> <NotAuthorized> <!-- 显示未授权的内容 --> </NotAuthorized> </AuthorizeView> ``` 4. 在登录页面或组件中使用 SignInManager 和 UserManager 进行身份验证: ``` var result = await _signInManager.PasswordSignInAsync(username, password, rememberMe, lockoutOnFailure: false); if (result.Succeeded) { return RedirectToPage("/Index"); } else { ModelState.AddModelError(string.Empty, "用户名或密码不正确。"); return Page(); } ``` 以上是实现 ASP.NET Core Blazor Server 应用程序的基本身份验证和授权功能的步骤。根据具体需求,还可以使用自定义身份验证方案、角色和策略来进行更复杂的权限控制。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值