我需要检测 blazor 服务器端应用程序的用户是否正在使用移动设备。有什么办法可以查出用户正在使用哪个设备?
我知道我可以使用 JSRuntime 来完成,但是有什么方法可以使用纯 C# 来解决这个问题吗?
我希望本地 Active Directory 中的所有人员都能够登录我们的 blazor 服务器端应用程序。在 MSDN 上,他们为我提供了各种身份验证选项。但这些都不适用于本地 Active Directory,仅适用于 Azure 中的 Active Directory。
Windows 身份验证不是选项,因为我需要用户能够注销应用程序。有谁知道通过本地 Active Directory 实现身份验证的可靠方法?任何帮助表示赞赏。
我有以下类,它用作 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) 我的 blazor 服务器端组件有一个简单的输入模型。我想对 DateTime 属性使用内置验证。
[Required]
public DateTime Date { get; set; }
Run Code Online (Sandbox Code Playgroud)
我如何才能只接受 DateTime 值 >= DateTime.Now?
有人知道我如何链接我的 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只是访问我的对象列表,它具有我需要的真正检查。
我创建了一个简单的表单,可以填写并保存到数据库,但我不知道如何在 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) 我尝试理解之间的概念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?
我在 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) 我需要将字符串转换为十六进制表示的字节数组。例如:
值: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# ×9
asp.net-core ×6
blazor ×4
async-await ×1
asynchronous ×1
datetime ×1
deadlock ×1
ldap ×1
linq ×1
validation ×1