小编Mar*_*ein的帖子

如何在 blazor 服务器端应用程序中检测移动设备?

我需要检测 blazor 服务器端应用程序的用户是否正在使用移动设备。有什么办法可以查出用户正在使用哪个设备?

我知道我可以使用 JSRuntime 来完成,但是有什么方法可以使用纯 C# 来解决这个问题吗?

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

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

如何在 Blazor 服务器端应用程序中从本地 Active Directory 实施身份验证?

我希望本地 Active Directory 中的所有人员都能够登录我们的 blazor 服务器端应用程序。在 MSDN 上,他们为我提供了各种身份验证选项。但这些都不适用于本地 Active Directory,仅适用于 Azure 中的 Active Directory。

Windows 身份验证不是选项,因为我需要用户能够注销应用程序。有谁知道通过本地 Active Directory 实现身份验证的可靠方法?任何帮助表示赞赏。

c# ldap active-directory asp.net-core blazor-server-side

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

Blazor 触发自定义验证消息

我有以下类,它用作 Blazor 服务器端应用程序中 EditForm 的输入模型。

public class KundeInput
{
    [ValidateComplexType]
    public List<AnsprechpartnerInput> Ansprechpartner { get; } = new List<AnsprechpartnerInput>();
  
    public string? Kundennummer { get; }
 
    [Required]
    [MaxLength(60)]
    public string Firma { get; set; } = String.Empty;
    [MaxLength(60)]
    public string? Name2 { get; set; }
    [MaxLength(60)]
    public string? Name3 { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

如您所见,我的模型包含另一个名为 AnsprechpartnerInput 的模型的列表。这是这个模型:

public class AnsprechpartnerInput
{
    public string? Kundennummer { get; set; }
    public int Nummer { get; } = -1;
    [MaxLength(60)]
    [Required]
    public string Vorname …
Run Code Online (Sandbox Code Playgroud)

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

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

如何添加日期时间验证范围

我的 blazor 服务器端组件有一个简单的输入模型。我想对 DateTime 属性使用内置验证。

[Required]
public DateTime Date { get; set; }
Run Code Online (Sandbox Code Playgroud)

我如何才能只接受 DateTime 值 >= DateTime.Now?

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

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

LINQ 两个 Where 子句

有人知道我如何链接我的 where 子句吗?

我想通过在第二个结果中找到的项目过滤我的主列表中的项目。

我有以下示例代码

@foreach (var artikel in Controller.Artikel
    .Where(x => x.LieferantenArtikel
                .Where(y => y.Lieferant.LieferantId == bestellung.LieferantId)
)
{
    <option value="@artikel.Artikelnummer">@artikel.Artikelnummer</option>
}
Run Code Online (Sandbox Code Playgroud)

第一个.Where只是访问我的对象列表,它具有我需要的真正检查。

c# linq

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

如何在 blazor 组件中显示来自后端的自定义引导警报

我创建了一个简单的表单,可以填写并保存到数据库,但我不知道如何在 blazor 组件中实现任何类型的成功消息。这是我的表格:

<EditForm Model=@Input OnValidSubmit="Speichern">
    <DataAnnotationsValidator />
    <ValidationSummary />
    <div class="form-row">
        <div class="form-group col-md-6">
            <label>Vorname</label>
            <InputText class="form-control" @bind-Value="Input.FirstName" />
            <ValidationMessage For="() => Input.FirstName" />
        </div>
        <div class="form-group col-md-6">
            <label>Nachname</label>
            <InputText class="form-control" @bind-Value="Input.LastName" />
            <ValidationMessage For="() => Input.LastName" />
        </div>
    </div>
    <div class="form-group">
        <label>Username</label>
        <InputText class="form-control" @bind-Value="Input.Username" />
        <ValidationMessage For="() => Input.Username" />
    </div>
    <div class="form-group">
        <label>E-Mail</label>
        <InputText class="form-control" @bind-Value="Input.Email" />
        <ValidationMessage For="() => Input.Email" />
    </div>
    <div class="form-group">
        <label>Telefonnummer</label>
        <InputText class="form-control" @bind-Value="Input.PhoneNumber" />
        <ValidationMessage For="() => Input.PhoneNumber" />
    </div> …
Run Code Online (Sandbox Code Playgroud)

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

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

AsyncFunction().GetAwaiter().GetResult() 和 Task.Run(() =&gt; AsyncFunction).GetAwaiter().GetResult() 有什么区别?

我尝试理解之间的概念GetAwaiter().GetResult()。我知道如果可能的话不应该使用它,但在这种情况下我不能使用 async/await,所以我必须从同步事务中的异步函数获取结果。

让我们考虑这个简单的 Blazor 服务器应用程序:

@page "/"

<button @onclick="GetAwaiterGetResultOnTask">Task GetAwaiter().GetResult()</button>
<button @onclick="GetAwaiterGetResultOnFunction">Function GetAwaiter().GetResult()</button>

<p>@_message</p>
@code {

    private string _message;
    private async Task<string> AsyncFunction(string message)
    {
        await Task.Delay(500);

        return message;
    }

    private void GetAwaiterGetResultOnTask()
    {
        _message = Task.Run(() => AsyncFunction("Message from GetAwaiterGetResultOnTask")).GetAwaiter().GetResult();
    }

    private void GetAwaiterGetResultOnFunction()
    {
        _message = AsyncFunction("Message from GetAwaiterGetResultOnFunction").GetAwaiter().GetResult();
    }
}
Run Code Online (Sandbox Code Playgroud)

调用该函数GetAwaiterGetResultOnFunction将导致死锁。然而,当我打电话时却GetAwaiterGetResultOnTask没有。

它们与功能之间的主要区别是什么?为什么调用时不会导致死锁Task.Run

c# deadlock asynchronous async-await

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

Blazor 获取两个属性的验证消息

我在 Blazor 服务器端应用程序中有一个简单的 EditForm。它有一个绑定属性,它改变了另一个也应该由表单验证的属性。

表格包含以下部分

<div class="form-group col-md-6">
    <label for="inputRechnungsnummer">Rechnungsnummer</label>
    <InputNumber @bind-Value="Input.Rechnungsnummer" id="inputRechnungsnummer" class="form-control" />
    <ValidationMessage For="() => Input.CustomerExists" />
    <ValidationMessage For="() => Input.Rechnungsnummer" />
</div>
Run Code Online (Sandbox Code Playgroud)

如您所见,我想在这个 InputField 下显示两条消息。

bond 字段调用一个方法来查找客户详细信息。

public int Rechnungsnummer 
{ 
    get => _rechnungsnummer; 
    set
    {
        _rechnungsnummer = value;
        SearchKunde();
    }
}
Run Code Online (Sandbox Code Playgroud)

这个方法改变了我的属性值

private void SearchKunde()
{

    /* LOGIC */
    
    if(name != null)
    {
        Kundenname = name;
        CustomerExists = true;
    }
    else
    {
        Kundenname = "";
        CustomerExists = false;
    }
}
Run Code Online (Sandbox Code Playgroud)

第二个属性定义为:

[Required]
[Range(typeof(bool), "true", "true", …
Run Code Online (Sandbox Code Playgroud)

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

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

将字符串转换为十六进制字节数组

我需要将字符串转换为十六进制表示的字节数组。例如:

值:06000002 我需要的是:

30 36 30 30 30 30 30 32
Run Code Online (Sandbox Code Playgroud)

我尝试将所有字符隐式转换为字节,如下所示:

byte[] bytes = new byte[daten.Length];
for (int i = 0; i < daten.Length; i++)
{
    int value = Convert.ToInt32(daten[i]);
    
    bytes[i] = (byte)daten[i];
}
Run Code Online (Sandbox Code Playgroud)

但是我总是得到这个结果:

48 54 48 48 48 48 48 50
Run Code Online (Sandbox Code Playgroud)

我不需要字符串形式的结果!我需要它作为字节数组!

如何达到这个目标?

c#

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