标签: blazor-server-side

如何在 Blazor 服务器端应用程序中注销后重定向到主页

我的 Blazor 服务器端应用程序使用 Azure B2C 进行身份验证。注销后,用户将被重定向到通知注销成功的通用页面。如何使应用程序重定向到主页(即登录页面)?

这是我的身份验证的一部分:

<AuthorizeView>
<Authorized>
    @if (canEditProfile)
    {
        <a href="MicrosoftIdentity/Account/EditProfile" style="color: white">Hello, @context.User.Identity.Name!</a>
    }
    else
    {
        <span style="color: white">Hello, @context.User.Identity.Name!</span>
    }
    <a href="MicrosoftIdentity/Account/SignOut" style="color: white">Log out</a>
</Authorized>
<NotAuthorized>
    <a href="MicrosoftIdentity/Account/SignIn" style="color: white">Log in</a>
</NotAuthorized>
</AuthorizeView>
Run Code Online (Sandbox Code Playgroud)

azure-ad-b2c blazor-server-side

1
推荐指数
1
解决办法
3997
查看次数

如何在 Blazor 服务器端动态注入 JavaScript 文件

我有一个 .js 文件,其中包含以下 JavaScript 代码:

         <script>     
            abc= window.abc|| {};
            abc.Metrics = abc.Metrics || {};
            abc.Metrics.sc = abc.Metrics.sc || {};
            abc.Metrics.sc.country = "us";         /***dynamic value based on site***/
            abc.Metrics.sc.language = "en";        /***dynamic value based on site***/
            abc.Metrics.sc.segment = "corp";      /***dynamic value based on site***/
            abc.Metrics.sc.customerset = "19";    /***dynamic value based on site***/
            abc.Metrics.sc.cms = "stp";           /***dynamic value based on site***/
            abc.Metrics.sc.pagename = "pname";  /***relevant unique page name***/
            abc.Metrics.sc.applicationname = "Browse:Product Detail"; 
         
        </script>
      
      <!-- Refer the below script in DEV -->
      <script …
Run Code Online (Sandbox Code Playgroud)

blazor blazor-server-side

1
推荐指数
1
解决办法
1497
查看次数

blazor 项目中的自定义 AuthenticationStateProvider 在服务器端不起作用

大家好! 我正在尝试在 Blazor WebAssembly 应用程序中创建自定义身份验证模式(这是工作室创建 3 个项目的地方 - 客户端、服务器、共享)。想法是避免 IS4 auth 并让我的 oun “内部”用户用于测试目的并了解 auth mech 的工作。我是通过创建自定义 AuthenticationStateProvider 来做到这一点的吗?就像官方文档中显示的那样。这是我的 AuthenticationStateProvider 类:

public class CustomAuthStateProvider : AuthenticationStateProvider
{
    private bool _isLoggedIn = true;

    //this is a parameter defininng whether user logged in or not
    //changed by reflection
    public bool IsLoggedIn
    {
        get
        {
            return _isLoggedIn;
        }
        set
        {
            _isLoggedIn = value;
            NotifyAuthenticationStateChanged(GetAuthenticationStateAsync());
        }
    }
    private static CustomAuthStateProvider _myInstance = null;



    public Serilog.ILogger _logger { get; set; }

    public override …
Run Code Online (Sandbox Code Playgroud)

asp.net asp.net-core asp.net-core-webapi blazor blazor-server-side

1
推荐指数
1
解决办法
4535
查看次数

类、记录、结构或接口成员声明中的标记“(”无效

我正在学习 Blazor 和 C#(两者都是新的),并且正在玩我的一个宠物项目。

对于该项目,我编写了一个Project.cs文件,位于按照Data教程创建的结构的目录中。

在某些时候,我需要一个字典数据结构,我尝试在类中创建这样的数据结构:

namespace MyApp.Data;

public class Project
{
    public Project()
    {
    }

    Dictionary<string, string> openWith =
    new Dictionary<string, string>();

    // Add some elements to the dictionary. There are no
    // duplicate keys, but some of the values are duplicates.
    openWith.Add("txt", "notepad.exe");
    openWith.Add("bmp", "paint.exe");
    openWith.Add("dib", "paint.exe");
    openWith.Add("rtf", "wordpad.exe");
}
Run Code Online (Sandbox Code Playgroud)

但是当我直接Invalid token '(' in class, record, struct, or interface member declaration从 Microsoft文档中获取这些行时,我收到了错误

我究竟做错了什么 ?

c# blazor blazor-server-side

1
推荐指数
1
解决办法
1万
查看次数

Blazor 服务器通知组件外部的 UI

我的应用程序将组件列表上传到我们的 ERP 中。上传过程可能需要 1 或 2 分钟。我想实时通知用户发生了什么。

我创建了一个 Blazor 服务器应用程序。我有带有一些 UI 逻辑的 razor 页面,但我不想将所有处理逻辑放在 razor 页面内。所以我把它放到了一个工人身上。

工作人员如何将通知推送到 blazor 组件?

我对 SignalR 很感兴趣,但它们主要是关于 Blazor WebAssembly 的,或者对我来说太基础了,无法了解如何将其应用到我的情况中。

我想知道什么是好方法?

signalr blazor blazor-server-side

1
推荐指数
1
解决办法
2022
查看次数

Blazor Layout 子文件夹导致无限循环

我创建了一个新的 blazor 服务器应用程序(Visual studio for Mac 中的默认 Microsoft 示例模板)。然后在 Page 文件夹中,我创建了一个新的子文件夹“Test”。在子文件夹“Test”中,我创建了以下文件:

_Imports.razor

@layout TestTemplate
Run Code Online (Sandbox Code Playgroud)

测试模板.razor

@inherits LayoutComponentBase

<h1>Test layout</h1>

@Body
Run Code Online (Sandbox Code Playgroud)

索引剃刀

@page "/test"

<h3>Hello test layout</h3>

@code {

}
Run Code Online (Sandbox Code Playgroud)

当我构建解决方案时,没有发现错误。但是当我打开浏览器并访问 URL http://localhost:portnr/test 时,我的浏览器会继续渲染/挂起(我认为是无限循环)。

根据 Microsoft https://learn.microsoft.com/en-us/aspnet/core/blazor/components/layouts?view=aspnetcore-6.0的文档,上述步骤应该有效(请参阅“将布局应用于文件夹”部分) 。

我检查了项目根目录下的 _Imports.razor 文件,看看是否有其他对 @layout 的引用,因为根据上面的链接,这将导致无限循环。App.razor 包含对 MainLayout 的引用:

<Router AppAssembly="@typeof(App).Assembly">
    <Found Context="routeData">
        <RouteView RouteData="@routeData" DefaultLayout="@typeof(MainLayout)" />
        <FocusOnNavigate RouteData="@routeData" Selector="h1" />
    </Found>
    <NotFound>
        <PageTitle>Not found</PageTitle>
        <LayoutView Layout="@typeof(MainLayout)">
            <p role="alert">Sorry, there's nothing at this address.</p>
        </LayoutView>
    </NotFound>
</Router>
Run Code Online (Sandbox Code Playgroud)

blazor blazor-server-side

1
推荐指数
1
解决办法
339
查看次数

在这种情况下如何使用级联类型参数?

Index.razor.cs:

我正在开发一个网格组件,它将显示一个项目列表:

<Grid Items="Transactions">
    <GridHeader>
        <GridColumn TItem="Transaction">ID</GridColumn>
        <GridColumn TItem="Transaction">Date</GridColumn>
    </GridHeader>
</Grid> 
Run Code Online (Sandbox Code Playgroud)

然后在 Grid.razor.cs 和 GridColumn.razor.cs 中我使用 typeparam TItem。但似乎我需要将 TITem 作为每个网格列中的参数传递,我该如何实现对类似以下内容的支持:

<Grid Items="Transactions" TItem="Transaction">
    <GridHeader>
        <GridColumn>ID</GridColumn>
        <GridColumn>Date</GridColumn>
    </GridHeader>
</Grid>   
Run Code Online (Sandbox Code Playgroud)

因此,TItem 会级联到所有子组件(无论它们嵌套的深度如何)

我查看了 CascadingTypeParam 但有关它的信息很少,所以我不确定如果它是上述解决方案,如何使用它。

blazor blazor-server-side blazor-webassembly

1
推荐指数
1
解决办法
546
查看次数

MudBlazor:单击外部对话框时防止关闭(在覆盖层上)

单击覆盖层(对话框外部)时是否可以防止关闭 MudBlazor 对话框?或者在单击覆盖层时运行任务?

c# blazor blazor-server-side mudblazor

1
推荐指数
1
解决办法
909
查看次数

我可以在Blazor中编写一个在视图中动态呈现元素的函数吗?

我有一个名为BusinessUnit的对象,该对象包含子业务单位的列表,并且我需要一个函数来为其父项下的每个子项提供<li>元素。我到目前为止的代码如下:

<ul id="Level0">
    @foreach (var bizUnit in businessUnitViewModel.BusinessUnitInfos)
    {
        <li>
            <span>@bizUnit.BusinessUnitName</span>
                <ul class="nested">
                    @foreach (var childOfbizUnit in bizUnit.Children)
                    {
                        <li>@childOfbizUnit.BusinessUnitName</li>
                    }
                </ul>
        </li>
    }
</ul>
Run Code Online (Sandbox Code Playgroud)

嵌套的foreach与第一个嵌套的foreach基本相同,但是对其进行硬编码会限制我可以拥有的层次结构级别。我需要这样的功能:

 public void HasKids(BusinessUnitInfo bizUnit)
    {
        foreach (var bizUnitChild in bizUnit.Children)
        {
            //Render an <li> tag element with bizUnitChild's 
            name<li>bizUnitChild.Name</li>

            HasKids(bizUnitChild);
        }
    }
Run Code Online (Sandbox Code Playgroud)

是否有人知道我可以在最后一个代码块中为注释做些什么?如何使用C#代码动态呈现列表标记?坦:)

mvvm razor blazor blazor-server-side

0
推荐指数
1
解决办法
132
查看次数

我如何在另一个组件中即时多次动态渲染 blazor 组件(例如:每次单击按钮)

我想在每次单击按钮时通过动态添加其他 blazor 组件来更新视图。我怎样才能做到这一点。

例如:每次单击组件 1 上的按钮时,应立即将组件 2 添加到组件 1 中。

blazor blazor-server-side blazor-client-side

0
推荐指数
1
解决办法
2366
查看次数