我正在使用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。非常感谢任何帮助。
我在某些库(MatBlazor、Telerik)中看到了这种具有ValueChanged
和ValueExpression
属性的常见模式,这让我很困惑。
两者有什么区别?什么时候使用它?
我只想在用户单击搜索按钮时将剃刀组件加载到另一个剃刀组件中,然后当用户单击隐藏按钮时将搜索剃刀组件(页面)显示到隐藏的 div 中,然后它将被隐藏。就像内联弹出窗口一样。
我正在开发一个新项目,该项目将使用 Identity Server 4 对用户可以和不能访问/查看的内容制定一些深入的策略。
我尝试将 AuthorizeView 与策略一起使用来隐藏导航中的选项,但视图是级联的,这意味着我有这样的内容:
<MatNavMenu>
<MatNavItem Href="/home" Title="Home"><MatIcon Icon="@MatIconNames.Home"></MatIcon> Home</MatNavItem>
<MatNavItem Href="/claims" Title="Claims"><MatIcon Icon="@MatIconNames.Vpn_key"></MatIcon> Claims</MatNavItem>
<AuthorizeView Policy="@PolicyNames.IdentitySystemAccess">
<Authorized>
<AuthorizeView Policy="@PolicyNames.AccessManagement">
<Authorized>
<MatNavSubMenu @bind-Expanded="@_accessSubMenuState">
<MatNavSubMenuHeader>
<MatNavItem AllowSelection="false"> Access Management</MatNavItem>
</MatNavSubMenuHeader>
<MatNavSubMenuList>
<AuthorizeView Policy="@PolicyNames.User">
<Authorized>
<MatNavItem Href="users" Title="users"><MatIcon Icon="@MatIconNames.People"></MatIcon> Users</MatNavItem>
</Authorized>
</AuthorizeView>
<AuthorizeView Policy="@PolicyNames.Role">
<Authorized>
<MatNavItem Href="roles" Title="roles"><MatIcon Icon="@MatIconNames.Group"></MatIcon> 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 …
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) 使用 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。
控制对话框大小的正确方法是什么?
我的代码应该是这样的,但它得到了空引用异常
<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)
绑定值类如下(SecilenAtikGrubu和TumAtikTipleri)
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 的新手,最近我正在学习它。
有谁知道如何从右到左制作Matblazor组件?
我的页面上有以下 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 从未实际显示为已完成。我错过了什么?
在将Material Design引入 Blazor ASP.Net Core 应用程序的包中,有两个看起来非常相似,即MatBlazor和Material.Blazor。甚至各自的文档页面(例如MatBlazor button和Material.Blazor button)也非常相似。
之前使用过MatBlazor,但之前没有使用过Material.Blazor,我想知道这两个包之间的主要区别,以帮助我决定使用哪个向前推进。
MatBlazor于 2018 年首次发布,Material.Blazor于 2020 年首次发布。这些包似乎有不同的作者,只有一个贡献者为 github 上的两个项目(MatBlazor github,Material.Blazor github)做出了贡献。
MatBlazor和Material.Blazor之间的主要区别是什么?
我正在尝试制作一个按钮,如果某个条件为假,该按钮将被禁用。对于常规按钮,这有效:
<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)
有没有更好的办法?
matblazor ×11
blazor ×10
c# ×4
.net-5 ×1
.net-core ×1
asp.net-core ×1
asynchronous ×1
binding ×1
javascript ×1
validation ×1