标签: matblazor

如何在 Blazor 服务器应用程序中停止事件传播

我正在使用Grid.Blazor库在 Blazor 应用程序上渲染服务器端网格。其中一列有一个带有单击事件的按钮。因此,当单击按钮时,网格行事件也会与按钮单击事件一起触发。我想停止事件传播并只让按钮单击事件触发。

网格:

  <GridComponent @ref="_gridComponent" T="QuickLists" Grid="@_grid"  OnRowClicked="@(async (item) => await ExerciseDetails(item))"></GridComponent>


Action<IGridColumnCollection<QuickExcerciseLists>> columns = c =>
        {
            c.Add().Titled("Actions").RenderComponentAs(typeof(ChildComponent)).SetWidth("5%");
            c.Add(o => o.Name, comparer).Titled("Name").SetWidth("10%");
            c.Add(o => o.Age, comparer).Titled("Age").SetWidth("15%");
            c.Add(o => o.Address, comparer).Titled("Address").RenderComponentAs<MatTooltip>().SetWidth("15%");
        };
Run Code Online (Sandbox Code Playgroud)

自定义列组件:

<MatBlazor.MatButton Icon="@MatIconNames.Remove_red_eye" @onclick="@ShowData" @onclick:stopPropagation="true"></MatBlazor.MatButton>
Run Code Online (Sandbox Code Playgroud)

我尝试传递@onclick:stopPropagation子按钮组件。但下面给出了编译错误。

该组件的组件参数“onclick”使用两次或多次。参数必须是唯一的(不区分大小写)。组件参数“onclick”由“@onclick:stopPropagation”指令属性生成。

我正在运行.Net core 3.1.201。非常感谢任何帮助。

.net-core blazor blazor-server-side matblazor

27
推荐指数
3
解决办法
2万
查看次数

何时在 Blazor 中使用 ValueChanged 和 ValueExpression?

我在某些库(MatBlazor、Telerik)中看到了这种具有ValueChangedValueExpression属性的常见模式,这让我很困惑。

两者有什么区别?什么时候使用它?

c# blazor matblazor asp.net-blazor

8
推荐指数
2
解决办法
8348
查看次数

如何通过单击按钮将另一个 Razor 组件加载到 Razor 组件中?

我只想在用户单击搜索按钮时将剃刀组件加载到另一个剃刀组件中,然后当用户单击隐藏按钮时将搜索剃刀组件(页面)显示到隐藏的 div 中,然后它将被隐藏。就像内联弹出窗口一样。

c# asp.net-core blazor blazor-server-side matblazor

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

Blazor 级联 AuthorizeView 策略不起作用

我正在开发一个新项目,该项目将使用 Identity Server 4 对用户可以和不能访问/查看的内容制定一些深入的策略。

我尝试将 AuthorizeView 与策略一起使用来隐藏导航中的选项,但视图是级联的,这意味着我有这样的内容:

<MatNavMenu>
<MatNavItem Href="/home" Title="Home"><MatIcon Icon="@MatIconNames.Home"></MatIcon>&nbsp; Home</MatNavItem>
<MatNavItem Href="/claims" Title="Claims"><MatIcon Icon="@MatIconNames.Vpn_key"></MatIcon>&nbsp; Claims</MatNavItem>
<AuthorizeView Policy="@PolicyNames.IdentitySystemAccess">
    <Authorized>
        <AuthorizeView Policy="@PolicyNames.AccessManagement">
            <Authorized>
                <MatNavSubMenu @bind-Expanded="@_accessSubMenuState">
                    <MatNavSubMenuHeader>
                        <MatNavItem AllowSelection="false">&nbsp; Access Management</MatNavItem>
                    </MatNavSubMenuHeader>
                    <MatNavSubMenuList>
                        <AuthorizeView Policy="@PolicyNames.User">
                            <Authorized>
                                <MatNavItem Href="users" Title="users"><MatIcon Icon="@MatIconNames.People"></MatIcon>&nbsp; Users</MatNavItem>
                            </Authorized>                               
                        </AuthorizeView>
                        <AuthorizeView Policy="@PolicyNames.Role">
                            <Authorized>
                                <MatNavItem Href="roles" Title="roles"><MatIcon Icon="@MatIconNames.Group"></MatIcon>&nbsp; Roles</MatNavItem>
                            </Authorized>
                        </AuthorizeView>
                    </MatNavSubMenuList>
                </MatNavSubMenu>
            </Authorized>
        </AuthorizeView>
    </Authorized>
</AuthorizeView>
Run Code Online (Sandbox Code Playgroud)

我已检查用户登录后是否存在满足定义的策略所需的声明,但由于某种原因,AuthorizeView 不起作用。

我已更新我的 App.Razor 以使用 AuthorizeRouteView。关于为什么会发生这种情况有什么想法吗?

注意:我使用分配给角色的声明,但这些声明是动态的,我无法在我的策略中使用policy.RequireRole(“my-role”),因此使用:

options.AddPolicy(PolicyNames.User, b =>
                {
                    b.RequireAuthenticatedUser();
                    b.RequireClaim(CustomClaimTypes.User, "c", "r", "u", "d");
                });
Run Code Online (Sandbox Code Playgroud)

当我的应用程序运行时,菜单中的任何项目都不会显示,除了不受 AuthorizeView …

identityserver4 .net-5 matblazor blazor-webassembly

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

Blazor WebAssembly 应用程序 - 导航时警告用户 - 在离开未保存更改的网页之前警告用户

wwwroot我在-中实现了以下代码index.html

"use strict";
(() => {
const modified_inputs = new Set;
const defaultValue = "defaultValue";
// store default values
addEventListener("beforeinput", (evt) => {
    const target = evt.target;
    if (!(defaultValue in target || defaultValue in target.dataset)) {
        target.dataset[defaultValue] = ("" + (target.value || target.textContent)).trim();
    }
});
// detect input modifications
addEventListener("input", (evt) => {
    const target = evt.target;
    let original;
    if (defaultValue in target) {
        original = target[defaultValue];
    } else {
        original = target.dataset[defaultValue];
    }
    if (original !== …
Run Code Online (Sandbox Code Playgroud)

javascript c# blazor matblazor blazor-webassembly

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

MatDialog:无论内容大小如何控制整体大小

使用 MatBlazor (1.5.4) MatDialog,我有兴趣将对话框大小固定或设置为总页面的百分比。当前,行为是对话框以其适合内容的大小打开。

我尝试在对话框定义的不同部分添加显式样式,但没有成功。

<MatDialog @bind-IsOpen="@IsDialogOpen" Style="width: 600px; height:600px">
    <MatDialogTitle>Some title</MatDialogTitle>
    <MatDialogContent Style="width: 600px; height:600px">This is the content</MatDialogContent>
    <MatDialogActions>
        <MatButton OnClick="@(() => this.IsDialogOpen = false)" Icon="close">Close</MatButton>
    </MatDialogActions>
</MatDialog>

@code
{
    private bool IsDialogOpen { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

似乎没有明确的机制集成到MatDialog组件中,因此我猜需要明确的样式/CSS。

控制对话框大小的正确方法是什么?

c# blazor matblazor

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

MatBlazor 选择问题

我的代码应该是这样的,但它得到了空引用异常

 <MatSelect Label="At?k Tipi" @bind-Value="@SecilenAtikGrubu.GrupId" Style="width:100%">
      @foreach (var item in TumAtikTipleri)
     {
        <MatOption Value="@item.Id">@item.Deger1</MatOption>
     }
 </MatSelect>
Run Code Online (Sandbox Code Playgroud)

但是当我这样使用时,它正在工作

  <select class="mdc-select__native-control" @bind="SecilenAtikGrubu.GrupId">
     @foreach (var item in TumAtikTipleri)
     {
         <option value="@item.Id">@item.Deger1</option>
     }
  </select>
Run Code Online (Sandbox Code Playgroud)

绑定值类如下(SecilenAtikGrubuTumAtikTipleri

 public class GrupKodlari : KayitBilgisi
{
    [Key]
    public int Id { get; set; }
    public string Tur { get; set; }
    public string Isim { get; set; }
    public string Deger1 { get; set; }
    public string Deger2 { get; set; }
    public string Deger3 …
Run Code Online (Sandbox Code Playgroud)

blazor blazor-server-side matblazor

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

如何制作 matblazor RTL(从右到左)

我是Blazor 的新手,最近我正在学习它。

有谁知道如何从右到左制作Matblazor组件?

blazor matblazor

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

从 Blazor 中的异步功能禁用按钮

我的页面上有以下 EditForm 模型:

<EditForm Model="@projectParameters" OnValidSubmit="@SubmitProject">
       <MatButton Raised="true" Type="submit" Disabled="@saveButtonDisabled">@saveButtonName</MatButton>
</EditForm>
Run Code Online (Sandbox Code Playgroud)

然后执行以下功能:

private async Task SubmitProject()
    {
        DisableSave();

        if (pageType == "Create")
        {
            await CreateProject();
        }
        else if (pageType == "Create")
        {
           await EditProject();
        }
    }
Run Code Online (Sandbox Code Playgroud)

void DisableSave()
    {
        saveButtonDisabled = true;
        saveButtonName = "Saving...";
        StateHasChanged();
    }
Run Code Online (Sandbox Code Playgroud)

SubmitProject 和 DisableSave 被正确调用,但当 CreateProject 工作时, saveButtonName 和 disabled 从未实际显示为已完成。我错过了什么?

validation asynchronous blazor matblazor blazor-client-side

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

MatBlazor 和 Material.Blazor 有什么区别?

在将Material Design引入 Blazor ASP.Net Core 应用程序的包中,有两个看起来非常相似,即MatBlazorMaterial.Blazor。甚至各自的文档页面(例如MatBlazor buttonMaterial.Blazor button)也非常相似。

之前使用过MatBlazor,但之前没有使用过Material.Blazor,我想知道这两个包之间的主要区别,以帮助我决定使用哪个向前推进。

MatBlazor于 2018 年首次发布,Material.Blazor于 2020 年首次发布。这些包似乎有不同的作者,只有一个贡献者为 github 上的两个项目(MatBlazor githubMaterial.Blazor github做出了贡献。

MatBlazorMaterial.Blazor之间的主要区别是什么?

material-design blazor matblazor blazor-webassembly

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

Matblazor组件属性:内容复杂

我正在尝试制作一个按钮,如果某个条件为假,该按钮将被禁用。对于常规按钮,这有效:

<button @disabled="!IsReady">Click me</button>
@code
{
    public bool IsReady { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

我正在使用 MatBlazor 库,其MatButton版本为button

<MatButton Disabled="@!IsReady">Click me</MatButton>
Run Code Online (Sandbox Code Playgroud)

后者不起作用:它给出以下错误:

组件属性不支持复杂内容(混合 C# 和标记)

在好的 WPF 中,我们可能会在绑定中使用转换器,因此绑定的布尔值是反转的。这是 MatBlazor 的限制吗?

我看到的快速解决方案是执行以下操作:

<MatButton Disabled="@IsNotReady">Click me</MatButton>
@code
{
    public bool IsReady { get; set; }
    public bool IsNotReady => !IsReady;
}
Run Code Online (Sandbox Code Playgroud)

有没有更好的办法?

binding blazor matblazor

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