我从 word 创建了一个文档文件并导出为 pdf 。我想在 razor 页面的 Div 元素内显示 pdf 内容。如何显示 razor 页面中的 pdf 内容。请您提供一个示例代码如何在 blazor 服务器端显示
我尝试在 Blazor 应用程序中使用 Azure 应用程序配置中的功能标志。我一直在关注Microsoft 的文档来添加它们。我可以通过将 FeatureManager 注入到我的代码部分并利用 .cshtml 文件中的功能标签来成功地使用它们,如下所示,
<feature name="Beta">
<li class="nav-item">
<a class="nav-link text-dark" asp-area="" asp-controller="Beta" asp-action="Index">Beta</a>
</li>
</feature>
Run Code Online (Sandbox Code Playgroud)
但是,我无法在 .razor 文件中成功使用功能标签。这是由于无法将此指令添加到我的文件中造成的。
@addTagHelper *, Microsoft.FeatureManagement.AspNetCore
Run Code Online (Sandbox Code Playgroud)
有没有办法在我的 Razor 文件中使用功能标签?
我有一个 Blazor 服务器应用程序 (.net5),它使用 Microsoft.Identity.Web 将用户登录到 AzureAD。这部分一切按预期工作 - 加载应用程序,它会自动获取“Microsoft Signin”对话框。AuthenticationStateTask 还将用户显示为“IsAuthenticated”。我的问题是尝试添加“注销”按钮。
我努力了:
<a href="https://login.microsoftonline.com/common/oauth2/v2.0/logout">Log out</a>
Run Code Online (Sandbox Code Playgroud)
和:
<a href="https://login.microsoftonline.com/{domainID}/oauth2/logout">Log Out</a>
Run Code Online (Sandbox Code Playgroud)
两者都会将我带到 Microsoft“请稍候,我们将您注销”页面,唯一的区别是第一个选项要求“从哪个帐户”注销。在浏览器中按“返回”或再次手动转到站点地址,我会自动以以前的用户身份重新登录。如果我按“注销”,然后手动转到:
/signout-oidc
Run Code Online (Sandbox Code Playgroud)
我得到一个空白页面(我理解是正确的),但然后返回到 Wep 应用程序,我被正确地要求再次登录 - 所以我的假设是回调不会被自动调用。
在我的 appsettings.json 中,我有:
"CallbackPath": "/signin-oidc",
"SignedOutCallbackPath": "/signout-callback-oidc",
"RemoteSignOutPath": "/signout-oidc",
Run Code Online (Sandbox Code Playgroud)
以及域和租户等。
在 Azure Web 注册中,我在“前端通道注销 URL”字段中有 /signout-oidc。
我一定错过了一些东西(或者调用了错误的网址?),但是经过几个小时的研究,我无法解决它。
对此的任何帮助将不胜感激,谢谢。
我想将 swagger UI 嵌入到我的 blazor 应用程序的页面中。我很难找到如何使用剃刀页面执行此操作的示例。有人有这样做的例子吗?我通常是一名后端开发人员,所以在启动和运行这个前端方面有点困难。
我有 Blazor 服务器应用程序和AD B2C身份验证。我已经配置了 Azure 并且该应用程序工作正常。我还可以使用以下代码查看声明。
<AuthorizeView>
<Authorized>
<table style="border: 1px solid black;">
<tr style="border: 1px solid black; padding: 2px;">
<th style="border: 1px solid black; padding: 2px;">Claim Type</th>
<th style="border: 1px solid black; padding: 2px;">Value</th>
</tr>
@foreach (var item in context.User.Claims)
{
<tr style="border: 1px solid black; padding: 2px;">
<td style="border: 1px solid black; padding: 2px;">@item.Type</td>
<td style="border: 1px solid black; padding: 2px;">@item.Value</td>
</tr>
}
</table>
</Authorized>
</AuthorizeView>
Run Code Online (Sandbox Code Playgroud)
我想访问C# 类(而不是 razor 文件)中的用户声明并保存在数据库中。我怎样才能做到这一点?声明是否存储在像HttpContext这样的全局对象中,我可以从中检索这些声明?
在最新的 Visual Studio 2019 中为我的 Blazor 服务器端解决方案创建 Razor 类库时,我看到以下文件:
ExampleJsInterop.cs
public class ExampleJsInterop : IAsyncDisposable
{
private readonly Lazy<Task<IJSObjectReference>> moduleTask;
public ExampleJsInterop(IJSRuntime jsRuntime)
{
moduleTask = new(() => jsRuntime.InvokeAsync<IJSObjectReference>(
"import", "./_content/MyNamespace/exampleJsInterop.js").AsTask());
}
public async ValueTask<string> Prompt(string message)
{
var module = await moduleTask.Value;
return await module.InvokeAsync<string>("showPrompt", message);
}
public async ValueTask DisposeAsync()
{
if (moduleTask.IsValueCreated)
{
var module = await moduleTask.Value;
await module.DisposeAsync();
}
}
}
Run Code Online (Sandbox Code Playgroud)
exampleJsInterop.js
// This is a JavaScript module that is loaded on demand. It can …Run Code Online (Sandbox Code Playgroud) 我刚刚开始学习 Blazor,所以如果问题很奇怪,请耐心等待。
是否可以将数据作为内容类型“application/x-www-form-urlencoded”发布到 Blazor razor 组件,以便在浏览器中打开页面时,它将显示调用者提供的初始值?当使用查询字符串并使用 HTTP GET 方法并在 navigationManager 的帮助下调用 razor 组件 url 时,它效果很好。在这种情况下,我无法更改数据的发送方式。我需要能够使用内容类型 application/x-www-form-urlencoded 处理 HTTP POST 调用,并且主体提供初始值作为 key=value。加载页面时,数据应显示在屏幕上。然后应该在页面上为用户提供一些选项,并通过单击按钮进行选择。
如果这不可能,那么满足此特定要求的正确方法是什么,即无法更改数据的发送方式(必须是内容类型为 application/x-www-form-urlencoded 的 HTTP POST)并且接收应用程序为 Blazor。
更新:Blazor 应用程序最好是服务器端的,但如果需要,可以更改为 Web 程序集(客户端)。
asp.net-core blazor blazor-server-side asp.net-blazor blazor-webassembly
我遇到以下情况,非常感谢任何帮助:
我在用户界面(Blazor 服务器应用程序)中使用 JSON Web 令牌 (jwtbearer) 进行身份验证和授权,以访问我的 Web API (Asp.net core 5.0)。
我尝试从通过 UserId 过滤的 API 返回数据(在创建令牌时我也将其添加为 NameIdentifier)。ClaimsPrincipal然后我注意到,点击控制器时返回的声明ControllerBase.User与我的令牌不同。
我有两项NameIdentifier索赔,但缺少“sub”。相反,看起来 sub 已更改为第二个NameIdentifier。
但是,当我随请求发送时,令牌的有效负载看起来是正确的。这是我的令牌的有效负载:
{
"sub": "admin@caliprog.com",
"jti": "15c23576-9f5b-4f81-a985-ab236830c7b5",
"http://schemas.xmlsoap.org/ws/2005/05/identity/claims/nameidentifier": "9b437d6c-8fb8-455d-87f5-986d36b26dcf",
"http://schemas.microsoft.com/ws/2008/06/identity/claims/role": "Administrator",
"exp": 1625472724,
"iss": "test.com",
"aud": "test.com"
}
Run Code Online (Sandbox Code Playgroud)
显然我在某个地方犯了错误,但我不知道错误出在哪里。如果有人能指出我的方向,那就太好了。我很高兴自己做更多研究,但我不知道从哪里开始。
以下是一些可能相关的代码部分,如果我遗漏了任何重要的内容,请告诉我:
我的 GetRequest(它有效,但我很想替换this.User.Claims.ToList()[2].Value为var userId = this.User.FindFirst(ClaimTypes.NameIdentifier).Value;)
[HttpGet]
public async Task<IActionResult> GetWorkouts()
{
try
{
_logger.LogInfo(LogMessages.AttemptMsg, ControllerContext);
var userId = this.User.Claims.ToList()[2].Value;
var workouts …Run Code Online (Sandbox Code Playgroud) 我正在尝试解决在尝试使用 blazor 在我女儿的狗店上执行自定义验证属性时发现的问题。
基本上我有一个属性如下:
[Test]
public int? PetAge { get; set; }
Run Code Online (Sandbox Code Playgroud)
如您所见,我将创建一个名为“Test”的自定义属性,因此我创建了一个新类,如下所示:
public class Test : ValidationAttribute
{
protected override ValidationResult? IsValid(object? value, ValidationContext validationContext)
{
return new ValidationResult("niet! niet!");
}
}
Run Code Online (Sandbox Code Playgroud)
我的理解是,我可以返回一个带有字符串消息的新 ValidationResult,或者如果一切顺利,我可以返回 ValidationResult.Success。在我的示例中,它应该始终返回问题,因为除了始终返回验证结果之外,我们没有提供任何其他逻辑。
运行此代码时,它根本不返回任何内容,表单上也没有显示任何错误。现在我注意到的是,如果我使用 IsValid 方法的其他版本,它会起作用,唯一的问题是我想发回自定义消息而不仅仅是真/假结果。其工作原理如下:
public override bool IsValid(object? value)
{
return false;
}
Run Code Online (Sandbox Code Playgroud)
但在这种情况下,我必须在参数中提供错误消息,如下所示:
[Test(ErrorMessage("this is not ok!")]
public int? PetAge { get; set; }
Run Code Online (Sandbox Code Playgroud)
由于这些参数必须是常量,因此这是一个很棒的想法,不仅能够将自定义消息显示为错误和/或访问上下文等......
我在 Blazor 应用程序上做错了什么吗?任何帮助将不胜感激!
我有一个 Blazor 表单,其中包含一些单选按钮(在 InputRadioGroup 内)和一些复选框。我有两个问题:
我通过添加此剃刀组件,使用 Blazer Server .net 6.0 模板在新项目中重现了该问题:
<EditForm Model="FormModel">
<InputRadioGroup @bind-Value="FormModel.SelectedRadio">
<InputRadio Value="1" /> 1
<InputRadio Value="2" /> 2
</InputRadioGroup>
<InputCheckbox @bind-Value="FormModel.Checkbox"/>
</EditForm>
@code {
private FormData FormModel { get; set; } = new FormData();
public class FormData
{
public string SelectedRadio { get; set; }
public bool Checkbox { get; set; }
}
}
Run Code Online (Sandbox Code Playgroud) blazor ×5
asp.net-core ×3
c# ×3
azure-ad-b2c ×1
c#-5.0 ×1
javascript ×1
jwt ×1
pdf ×1
rest ×1
swagger-ui ×1