第一次进入 Blazor。
在开始模板中,我看到事件 btnClicked 是如何工作的。
对于按钮事件,它是这样的:
<button class="btn btn-primary" @onclick="IncrementCount">Click me</button>
@code {
private int currentCount = 0;
private void IncrementCount()
{
currentCount++;
}
}
Run Code Online (Sandbox Code Playgroud)
当我不想在点击按钮上调用 IncementCount 时,它是什么代码行
但是在“onload page event”或者这个事件叫什么?
谢谢帮助
我创建了一个页面,其中向用户显示服务器报告的天气数据。时间保存为 UTC,如何从 Blazor 服务器应用程序显示本地用户或浏览器的时间?
在过去的几天里,我试图在我的 blazor 应用程序中读出浏览器分辨率。我尝试这样做:[JSInvokable] Blazor Methode 由 JS 脚本调用。
1.我的问题是:宽度和高度仅在我重新加载(手动刷新)页面后显示在我的blazorpage中。我无法调用 this.StateHasChanged() 因为我的方法是静态的。
我如何调用 StateHasChanged 或者我需要做什么才能显示新数据?我对 ASP.net 等还很陌生,所以如果可能的话请包含一个代码示例;)
这是我的 Code blazor (服务器端)代码:
@page "/"
@inject IJSRuntime jsRuntime
<h1>Window Dimensions</h1>
<p>Window Width: @Width</p>
<p>Window Height: @Height</p>
<p>@DebugString</p>
@code {
public static int Width;
public static int Height;
public static string DebugString;
[JSInvokable]
public static async Task GetBrowserDimensions(int width, int height)
{
Width = width;
Height = height;
if (Width < 600)
{
DebugString = "small_UI";
}
if (Width >= 600)
{
DebugString = …
Run Code Online (Sandbox Code Playgroud) 我在 blazor 服务器应用程序的 Iframe 内加载不同的 html 页面。为了更改 Iframe 的内容,我使用了多个按钮。单击按钮时,相应的 Html 页面将加载到 Iframe 中(一个 Iframe - 不同的内容 - 通过单击按钮进行更改)。
点击后如何检查内容是否已完全加载?原因是,现在如果用户连续快速单击不同的按钮,则 Iframe 根本不显示内容(仅显示底层网格和摊位的背景颜色)。Iframe 加载完成后我可以取回 bool 值吗?
如果我有 Js 的知识,我就不会喜欢 Blazor。我找到了一些帖子,其中 js 是这个问题的解决方案,但是。我不知道如何正确地将其实现到我的 blazor 应用程序中。我不能简单地将 js 复制到 hmtlpage 中。它必须位于文件 _Host.cshtml 中,但如果我把它放在那里,...document.querySelector('myIframe').addEventListener... 在开发工具控制台中会说 null 。谢谢你的帮助。如果它与 js 有关,请善意地向我解释,就像向 nuub 解释一样(我是什么:)。
<script type="text/javascript">
document.querySelector('myIframe').addEventListener("load", ev => {
console.log('iframe is completely loaded');
})
</script>
Run Code Online (Sandbox Code Playgroud)
我有一个 Blazor 项目,在 Startup.cs 中我添加了一个服务
public void ConfigureServices(IServiceCollection services)
{
....
services.AddSingleton<Models.UserVisit>();
}
Run Code Online (Sandbox Code Playgroud)
我可以在这样的 razor/blazor 页面上使用/访问该服务:
@inject Models.UserVisit userVisitObj
Run Code Online (Sandbox Code Playgroud)
(UserVisit 是 Models 文件夹中的“普通”C# .cs 类)
我不知道如何在没有 razorpage 的普通 C# 类中使用这个“userVisitObj”(我将在其中使用@inject)?
我如何在这里使用它(同一项目中的普通 C# 类,但没有 blazor/razor-componentpage):
public class UserModel
{
[BsonId]
public Guid Id { get; set; }
public CultureInfo UserCultureInfo { get; set; }
...
public UserModel()
{
[Inject]
Models.UserVisit userVisitObj; // THAT DOESN'T WORK -- ERROR
}
}
Run Code Online (Sandbox Code Playgroud)
我希望我能让我的问题有点清楚(请善待我仍然是初学者)。
我不确定使用我的方法将对象从子组件传递到其在 Blazor 中的消费父页面是否犯了错误。我有一个带有 ID、名称的 poco 类。具有从 poco 类对象列表中选择 div 的组件。用户选择一个条目,该条目应显示在父页面上。我缺乏经验,看不出我的解决方案有任何问题。1)我做对了吗?2)如果一切都好的话,OnInitializedAsync() 没有等待(父级),我应该使用 OnInitialized() 代替吗?3)Dispose的使用是否正确?4)如果我在一个应用程序中针对不同组件等使用相同的方法可能 20 次,那么这个解决方案可以吗?这个规模可以吗?谢谢,不行
父页面:
@page "/"
@inject MitarbeiterEventService MitarbeiterEventService
@implements IDisposable
<h1>ParentPage</h1>
<MitarbeiterSel></MitarbeiterSel>
<br />
@if (SelMitarbeiterFromChild != null)
{
<p>Selected Obj. from Child: @SelMitarbeiterFromChild.Name </p>
}
@code{
public MitarbeiterLite SelMitarbeiterFromChild;
protected override async Task OnInitializedAsync()
{
MitarbeiterEventService.EventMitarbeiterChangedInComp += HandelOnMitarbeiterChangedInComp;
}
public async void HandelOnMitarbeiterChangedInComp(object sender, MitarbeiterLite selMitarbeiter)
{
SelMitarbeiterFromChild = selMitarbeiter;
await InvokeAsync(() =>
{
StateHasChanged();
});
}
public void Dispose()
{
MitarbeiterEventService.EventMitarbeiterChangedInComp -= HandelOnMitarbeiterChangedInComp;
}
} …
Run Code Online (Sandbox Code Playgroud) 对于 C# 来说还是比较陌生。我的代码给了我想要的结果,但我不确定我是否以正确的方式实现了它。如果您想回答,请详细说明。我的目标是通过 搜索我的 MongoDB 中的条目FindAsync
。这是我的代码:
public async Task<List<T>> SearchDocAsync<T, U>(string collection,
string findFieldName, U findValue)
{
var _collection = db.GetCollection<T>(collection);
var filter = Builders<T>.Filter.Eq(findFieldName, findValue);
var result = await (_collection.FindAsync(filter).Result.ToListAsync());
return result;
}
Run Code Online (Sandbox Code Playgroud)
这是我在 WinForms 中的调用方式:
private async void BtnReadAll_Click(object sender, EventArgs e)
{
var asyncResults = await myMongoAux.SearchDocAsync<MyTModel, string>(
myCollectionName, "MyDBString", "TestString");
foreach (var r in asyncResults)
{
RtxbxResult.Text += $"{r.MyDBInt}\t{r.MyDBString}\n";
}
}
Run Code Online (Sandbox Code Playgroud)
这安全吗?我不应该使用 a using
(但如何使用)?我读过一些关于你应该使用的内容:
配置等待(假)
如何以及为何?
非常友善,帮助我了解更多。感谢您的时间。:)
blazor ×5
c# ×4
events ×2
async-await ×1
call ×1
class ×1
iframe ×1
inject ×1
javascript ×1
localization ×1
parent-child ×1
server ×1
service ×1
utc ×1
winforms ×1