AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / user-1705266

Sam's questions

Martin Hope
Sam
Asked: 2025-03-31 05:41:38 +0800 CST

在 Blazor WASM 应用中绑定子组件中的输入

  • 5

我正在开发针对 .NET 9 的 Blazor WASM(独立)应用程序中的自动完成组件版本。

我能够使用以下代码将 绑定input到string变量并在用户输入其搜索关键字时采取行动,并且它工作正常,但是当我尝试将自动完成的 UI 移动到组件中时,将 绑定到我的变量似乎不起作用。该部件继续正常工作,并且我在每次击键后都会点击我的方法。@bind:afterinputbind:after

这是运行良好的代码,然后我将其移入一个组件:

...
<input @bind="UserInputText" @bind:event="oninput" @bind:after="OnUserInputChanged" />

...

@code {
   private string? UserInputText = "";

   private void OnUserInputChanged()
   {
      // Process user input and make suggestions
   }
}

然后,我将 UI 部分放入我正在创建的新组件中,以将自动完成功能封装到其自己的组件中。

这是父代码:

...

<AutoComplete UserInputText="UserInput" UserInputTextChangedHandler="OnUserInputChanged" />

...

@code {
   private string? UserInput = "";

   private void OnUserInputChanged()
   {
      // Process user input and make suggestions
   }
}

以下是组件内部的代码AutoComplete:

@typeparam TItem

<div>
   <input @bind="UserInputText" @bind:event="oninput" @bind:after="UserInputTextChangedHandler" />
</div>

@code {

   [Parameter]
   public string? UserInputText { get; set; }

   [Parameter]
   public Action UserInputTextChangedHandler { get; set; }

   [Parameter]
   public List<TItem> Suggestions { get; set; }
}

顺便说一句,我尝试使用EventCallback而不是Action传递OnUserInputChanged给自动完成组件,但随后收到一条错误,指出:

参数 1:无法从“Microsoft.AspNetCore.Components.EventCallback”转换为“System.Action”

还请记住,OnUserInputChanged即使我将该逻辑放入新组件中,接线实际上仍能正常工作。不再起作用的部分是绑定UserInputText到input组件内部。

我哪里犯了错误?

asp.net-core
  • 1 个回答
  • 21 Views
Martin Hope
Sam
Asked: 2025-03-29 01:51:29 +0800 CST

在 Blazor WASM 应用中选择一个选项后,bind:after 未触发

  • 6

我的 Blazor WASM 独立应用程序(针对 .NET 9)中有一个简单的应用程序select,我想在用户选择一个选项后执行一些操作。我了解对于async调用,Microsoft 现在建议使用bind:after。

我按照这个视频DoSomething()操作,并按照他在教程中所做的操作,但在我的例子中,我没有达到我在代码中设置的方法中的断点。我在这里做错了什么?

<div>
    <select @bind="SelectedState" @bind:after="DoSomething">
        <option value="">Please select one</option>
        <option value="AK">Alaska</option>
        <option value="MT">Montana</option>
        <option value="WY">Wyoming</option>
    </select>
</div>

@code {

    private string SelectedState;

    private async Task DoSomething()
    {
        var userSelected = SelectedState; // Have a break point here but don't hit it
    }
}
asp.net-core
  • 1 个回答
  • 62 Views
Martin Hope
Sam
Asked: 2025-02-19 13:26:31 +0800 CST

在 Google Play 商店免费试用 Android 应用

  • 5

我在 Google Play Store 中有一个提供自动续订订阅的应用,现在我想设置免费试用优惠。Google Play 似乎使用促销代码来处理此问题。我的问题是用户在哪里输入促销代码?这是我需要在应用中创建的屏幕,还是 Android 操作系统作为标准结帐流程的一部分处理的内容?

我在 Apple 的 AppStore 中也有同样的应用,我所要做的就是设置试用期。就是这样。Apple 会自动为用户提供我在优惠中设置的免费试用期,并在试用期结束时开始收费。

我对用户在我的 Android 应用中输入促销代码的位置感到困惑,希望得到一些澄清。

PS 这是Play Store 文档中表示免费试用是通过促销代码处理的部分- 除非我完全误解了这部分内容。

促销或促销代码可让您向有限数量的用户免费提供一次性产品或订阅试用。用户在您的应用或 Google Play 商店应用中输入促销代码,即可免费获得商品或订阅试用。

  • 1 个回答
  • 51 Views
Martin Hope
Sam
Asked: 2024-11-26 15:30:45 +0800 CST

如何确定导航自的页面的名称?

  • 6

在页面的视图模型中,我试图确定用户来自的页面的名称。导航堆栈看起来只是一个数组Page,但出于某种原因,以下代码显示了我用来nameof()从导航堆栈获取页面名称的红线。

var stack = Shell.Current.Navigation.NavigationStack.ToArray();
var indexForPreviousPage = stack.Count() - 2;
if(nameof(stack[indexForPreviousPage]) == nameof(SomePageInMyApp))
{
   // Do something
}

如何获取用户来自的页面的名称?除了查看导航堆栈之外,有没有更简单的方法可以获取它?

maui
  • 2 个回答
  • 39 Views
Martin Hope
Sam
Asked: 2024-11-06 12:37:27 +0800 CST

在 Blazor WASM Standalone 中获取访问令牌

  • 5

我有一个 Blazor WASM 独立应用程序,它使用 Azure AD B2C 进行用户和令牌管理。

我见过有关此问题的其他问题/答案,但就我而言,这些方法均不起作用,并且我的 Blazor WASM 独立应用无法获取访问令牌。

我的 Blazor 应用在​​ Azure AD B2C 上设置为 SPA 应用,需要注意的是,“隐式授权和混合流”部分下的“访问令牌”和“ID 令牌”选项未选中。此外,“允许公共流”设置为“否”——见下文。对于这些设置,我只是按照此处的说明进行操作:https: //learn.microsoft.com/en-us/aspnet/core/blazor/security/webassembly/standalone-with-azure-active-directory-b2c ?view=aspnetcore-8.0#register-an-app-in-azure

在此处输入图片描述

我还在 Blazor WASM 应用的“配置权限”下为我的 API 添加了“读取”和“写入”范围 - 如下所示:

在此处输入图片描述

在 Blazor WASM 方面,我的外观如下Program.cs:

...
builder.Services.AddMsalAuthentication(options =>
{
    builder.Configuration.Bind("AzureAdB2C", options.ProviderOptions.Authentication);
    options.ProviderOptions.LoginMode = "redirect";
    //options.ProviderOptions.DefaultAccessTokenScopes.Add("openid");
    //options.ProviderOptions.DefaultAccessTokenScopes.Add("offline_access");
    options.ProviderOptions.DefaultAccessTokenScopes.Add("https://mytenant.onmicrosoft.com/api/MyApiUser.Write");
});

// Add HttpClient for My API calls
builder.Services.AddHttpClient("MyApiClient",
        client => client.BaseAddress = new Uri("https://api.test.com"))
    .AddHttpMessageHandler<BaseAddressAuthorizationMessageHandler>();

builder.Services.AddScoped(sp => sp.GetRequiredService<IHttpClientFactory>()
    .CreateClient("MyApiClient"));

openid请注意,我注释掉了和的范围offline_access,但我也尝试了它们。无论如何,它不起作用,没有access_token收到任何结果。

在这个 SO 问答中,开发人员建议使用 Blazor WASM 应用程序的应用程序 ID,而不是对他有用的范围 URI。我确实尝试了以下方法,但也没有用。这是那个问题:Blazor Standalone WASM 无法使用 MSAL 获取访问令牌

options.ProviderOptions.DefaultAccessTokenScopes.Add("cb3574c0-305e-4e44-a3b7-ac5f045f94e7"); // options.ProviderOptions.DefaultAccessTokenScopes.Add("https://mytenant.onmicrosoft.com/api/MyApiUser.Write");

此处GUID的值cb3574c0-305e-4e44-a3b7-ac5f045f94e7是 Azure AD B2C 为我的 Blazor WASM 应用分配的应用程序 ID。

当我检查HttpClient我进行 API 调用的地方时,我发现DefaultRequestHeaders是null。

我不相信 Azure AD B2C 实际上会发送access_token任何消息。知道我在这里做错了什么吗?

  • 1 个回答
  • 22 Views
Martin Hope
Sam
Asked: 2024-10-16 01:13:41 +0800 CST

将 appsettings.json 中的密钥转换为 Azure 门户应用程序设置

  • 5

我的appsettings.json文件如下所示:

{
   "sqlDatabase": {
      "name": "my-sql-db",
      "connectionString": "my-connection-string-for-my-sql-db"
   },
   "documentDatabase": {
      "name": "my-document-db",
      "connectionString": "my-connection-string-for-my-document-db"
   }
}

将这些设置输入 Azure 门户上的“设置”>“环境变量”下的“应用程序设置”时,我使用哪些键?

例如,我尝试使用sqlDatabase:name作为我的 SQL 数据库名称的键,但:键名称不允许。如何将我的密钥“转换”为 Azure 门户可以接受的密钥?

我正在尝试为我的 Azure Functions 应用程序执行此操作,但我还需要对在 Azure App Service 上运行的 API 执行此操作。

  • 1 个回答
  • 30 Views
Martin Hope
Sam
Asked: 2024-09-18 13:42:07 +0800 CST

Azure 静态 Web 应用上托管的 Blazor WASM 上出现页面未找到错误

  • 5

我有一个非常基本的 Blazor WASM 应用程序,针对 .NET 8,托管在 Azure 静态 Web 应用程序上。

我刚刚添加了一个非常简单的页面——见下文。我可以直接在本地访问 URL,它工作正常,但在 Azure 静态 Web 应用服务上,我收到以下页面未找到错误——见下文。有趣的是,这不是我的应用程序应该生成的页面未找到错误。

以下是“Azure 页面未找到”错误:

在此处输入图片描述

我的简单页面如下所示:

@page "/privacy"

<h3>Privacy Policy</h3>

<div>
   <p>Some text about privacy policy</p>
   <p>More text about privacy policy</p>
</div>

我的应用程序使用 Azure AD B2C 进行用户管理,我刚刚添加的隐私页面应该对公众(即匿名用户和经过身份验证的用户)开放。

这就是我的App.razor样子:

<CascadingAuthenticationState>
    <Router AppAssembly="@typeof(App).Assembly">
        <Found Context="routeData">
            <AuthorizeRouteView RouteData="@routeData" DefaultLayout="@typeof(MainLayout)">
                <NotAuthorized>
                    @if (context.User.Identity?.IsAuthenticated != true)
                    {
                        <RedirectToLogin />
                    }
                    else
                    {
                        <p role="alert">You are not authorized to access this resource.</p>
                    }
                </NotAuthorized>
            </AuthorizeRouteView>
            <FocusOnNavigate RouteData="@routeData" Selector="h1" />
        </Found>
        <NotFound>
            <PageTitle>Not found</PageTitle>
            <LayoutView Layout="@typeof(MainLayout)">
                <p role="alert">Sorry, there's nothing at this address.</p>
            </LayoutView>
        </NotFound>
    </Router>
</CascadingAuthenticationState>

知道这里可能存在什么问题吗?

  • 1 个回答
  • 46 Views
Martin Hope
Sam
Asked: 2024-07-15 04:04:04 +0800 CST

在 Visual Studio 中返回文档注释中的标签

  • 6

在<returns>...</returns>我的方法的文档注释部分,我喜欢提供方法返回的数据类型的具体信息。

例如,返回的方法Customer,我的文档注释可能如下所示:

/// <summary>
/// Basic description/explanation of what this method does...
/// </summary>
/// <param name="id"></param>
/// <returns>Customer</returns>
public async Task<Customer> DoSomethingAsync(Guid id)
{
   // Method logic
   return myCustomer; // returning a Customer class
}

这可以正常工作,但是如果该方法返回,比如说,一个List<Customer>并且在returns部分中,我使用<returns>List<Customer></returns>,我会收到一条警告,内容如下:

XML 注释的 XML 格式不正确 — — “元素‘returns’需要结束标记。”

>我发现 Visual Studio 对in感到困惑List<Customer>。有什么建议可以让我在这种情况下仍然显示我的方法返回的内容,还是我只需忽略这些警告?

visual-studio
  • 1 个回答
  • 24 Views
Martin Hope
Sam
Asked: 2024-05-12 09:50:19 +0800 CST

Blazor Web 应用程序中的数据访问

  • 5

我正在尝试在 .NET 8 中的新 Blazor Web 应用程序和独立的 Blazor WASM 选项之间做出决定。我不太清楚如何以新的统一方法获取数据。

Blazor Web Apps 是否始终通过 API 端点调用 API 端点HttpClient,或者是否有类似于 MVC 方法的直接获取数据的方法?

据我所知,新的 Web 应用程序模型的主要优点之一是快速渲染页面/组件,因为它提供了灵活的选项,例如服务器渲染、流式传输等。这意味着有一个运行 .NET 的服务器。如果是这种情况,无需序列化/反序列化即可获取数据将是一个好处,或者它始终是对 API 端点的调用,然后反序列化数据。只是想知道统一的 Blazor 方法是如何处理这个问题的。

blazor
  • 1 个回答
  • 23 Views
Martin Hope
Sam
Asked: 2023-12-14 12:26:07 +0800 CST

将参数动态[]值发送到方法

  • 5

在我正在开发的应用程序中,一位前开发人员创建了一个需要params dynamic[]参数的方法。我熟悉dynamic但不确定如何向此函数发送参数。

我尝试调用的方法如下所示:

public async Task CallDbStoredProcedure(string procedureId, string collectionName, params dynamic[] spParameters)
{
   // Makes stored procedure call to Cosmos Db
}

我假设他使用了dynamic,因为每个参数可以是不同的类型,在我的特定场景中就是这种情况。

我需要发送两个参数:

  • @itemId这是一个Guid值
  • @statusId这是一个int值

如何params dynamic[]使用我的参数值创建它,以便将其发送到该CallDbStoredProcedure()方法?

  • 3 个回答
  • 46 Views
Martin Hope
Sam
Asked: 2023-08-31 01:21:59 +0800 CST

在 Blazor WASM 中操作 index.html

  • 5

我正在开发我的第一个 Blazor WASM 应用程序,我需要以编程方式设置/<body>更改index.html. 例如,设置浅色/深色主题是通过为<body>标签设置适当的类来完成的。

这只能通过 JS Interop 实现吗?还是有其他方法可以处理它?

blazor
  • 1 个回答
  • 25 Views

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    重新格式化数字,在固定位置插入分隔符

    • 6 个回答
  • Marko Smith

    为什么 C++20 概念会导致循环约束错误,而老式的 SFINAE 不会?

    • 2 个回答
  • Marko Smith

    VScode 自动卸载扩展的问题(Material 主题)

    • 2 个回答
  • Marko Smith

    Vue 3:创建时出错“预期标识符但发现‘导入’”[重复]

    • 1 个回答
  • Marko Smith

    具有指定基础类型但没有枚举器的“枚举类”的用途是什么?

    • 1 个回答
  • Marko Smith

    如何修复未手动导入的模块的 MODULE_NOT_FOUND 错误?

    • 6 个回答
  • Marko Smith

    `(表达式,左值) = 右值` 在 C 或 C++ 中是有效的赋值吗?为什么有些编译器会接受/拒绝它?

    • 3 个回答
  • Marko Smith

    在 C++ 中,一个不执行任何操作的空程序需要 204KB 的堆,但在 C 中则不需要

    • 1 个回答
  • Marko Smith

    PowerBI 目前与 BigQuery 不兼容:Simba 驱动程序与 Windows 更新有关

    • 2 个回答
  • Marko Smith

    AdMob:MobileAds.initialize() - 对于某些设备,“java.lang.Integer 无法转换为 java.lang.String”

    • 1 个回答
  • Martin Hope
    Fantastic Mr Fox msvc std::vector 实现中仅不接受可复制类型 2025-04-23 06:40:49 +0800 CST
  • Martin Hope
    Howard Hinnant 使用 chrono 查找下一个工作日 2025-04-21 08:30:25 +0800 CST
  • Martin Hope
    Fedor 构造函数的成员初始化程序可以包含另一个成员的初始化吗? 2025-04-15 01:01:44 +0800 CST
  • Martin Hope
    Petr Filipský 为什么 C++20 概念会导致循环约束错误,而老式的 SFINAE 不会? 2025-03-23 21:39:40 +0800 CST
  • Martin Hope
    Catskul C++20 是否进行了更改,允许从已知绑定数组“type(&)[N]”转换为未知绑定数组“type(&)[]”? 2025-03-04 06:57:53 +0800 CST
  • Martin Hope
    Stefan Pochmann 为什么 {2,3,10} 和 {x,3,10} (x=2) 的顺序不同? 2025-01-13 23:24:07 +0800 CST
  • Martin Hope
    Chad Feller 在 5.2 版中,bash 条件语句中的 [[ .. ]] 中的分号现在是可选的吗? 2024-10-21 05:50:33 +0800 CST
  • Martin Hope
    Wrench 为什么双破折号 (--) 会导致此 MariaDB 子句评估为 true? 2024-05-05 13:37:20 +0800 CST
  • Martin Hope
    Waket Zheng 为什么 `dict(id=1, **{'id': 2})` 有时会引发 `KeyError: 'id'` 而不是 TypeError? 2024-05-04 14:19:19 +0800 CST
  • Martin Hope
    user924 AdMob:MobileAds.initialize() - 对于某些设备,“java.lang.Integer 无法转换为 java.lang.String” 2024-03-20 03:12:31 +0800 CST

热门标签

python javascript c++ c# java typescript sql reactjs html

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve