小编Nev*_*ane的帖子

Blazor:在使用 @bind 时如何在 <select> 中使用 onchange 事件?

我需要能够在<select>. 问题是我也绑定了@bind,当我尝试使用@onchange 时出现错误,指出@bind 已经在使用它。我尝试使用@onselectionchange,但这没有任何作用(不运行该功能)。我可以忘记@bind 而只是将@onchange 分配给一个函数,但我不确定如何将选定的值传递给该函数。

我有以下代码:

<select @bind="@SelectedCustID" @ @onchange="@CustChanged" class="form-control">
    @foreach (KeyGuidPair i in CustList)
    {
        <option value="@i.Value">@i.Text</option>
    }
</select>
Run Code Online (Sandbox Code Playgroud)

谢谢。

select bind onchange blazor

32
推荐指数
6
解决办法
3万
查看次数

sql server从日期获取FULL月份名称

如何使用sql在sql server中获取整个月的名称?
我找不到使用DATEPART(mm, mydate)或使用的方法CONVERT(VARCHAR(12), CreatedFor, 107).

基本上我需要格式:2009年4月1日.

sql sql-server date-conversion

15
推荐指数
2
解决办法
11万
查看次数

ef 核心迁移不能使用秘密管理器

当我创建 .net core web 应用程序时,我在测试期间使用了秘密管理器。我通常能够创建一个新的 web 项目(mvc 和 web api),右键单击该项目并选择“管理用户机密”。这将打开一个 json 文件,我在其中添加了机密。然后我在我的 startup.cs 中使用它,如下所示:

services.AddDbContext<ApplicationDbContext>(options =>
    options.UseMySql(Configuration["connectionString"]));
Run Code Online (Sandbox Code Playgroud)

该网站在此方面运行良好,并且可以很好地连接到数据库。但是,当我尝试使用诸如 ef 核心迁移命令时add-migration,它们似乎无法从秘密管理器访问连接字符串。我收到错误消息“连接字符串不能为空”。当我Configuration["connectionString"]用实际字符串硬编码时,错误消失了。我已经在线检查并检查了 .csproj 文件,它们已经包含以下几行:

<UserSecretsId>My app name</UserSecretsId>
Run Code Online (Sandbox Code Playgroud)

然后:

<ItemGroup>
<DotNetCliToolReference Include="Microsoft.EntityFrameworkCore.Tools.DotNet" Version="2.0.1" />
<DotNetCliToolReference Include="Microsoft.Extensions.SecretManager.Tools" Version="2.0.0" />
Run Code Online (Sandbox Code Playgroud)

是否需要添加任何内容以便迁移可以访问连接字符串?

更新

我在上下文类中只有一个构造函数:

public ApplicationDBContext(DbContextOptions<ApplicationDBContext> options) : base(options)
{
}
Run Code Online (Sandbox Code Playgroud)

secret-manager visual-studio-2017 asp.net-core-2.0 entity-framework-core-migrations

11
推荐指数
2
解决办法
3417
查看次数

解决xamarin android"路径太长"没有重新定位

我最近开始ResolveLibraryProjectImports: PathTooLongException在我的xamarin android项目中收到错误xamarin.forms.当我在网上查询时,所有解决方案都说要重新安置项目.有没有办法更改项目属性或重新映射的方法可以帮助我避免重新定位整个项目?

更新:

由于赏金和问题已经出现在下面,这就是为什么我正在寻找一个重新定位的替代解决方案:

目录层次结构是有原因的.如果不是每个人都会拥有整个文件夹的根.它们旨在让我们组织一切.我的情况也一样.我已经组织了所有基于云,代码,框架等的文件夹.在我使用的所有框架中,由于项目的内部需求,我从未重新定位项目.因此,我没有看到我需要将项目从所有这些文件夹中移出(这也意味着从云中移除)并将它们放在除了其他项目之外的某个位置的原因,只是因为项目要求它.

xamarin.android pathtoolongexception xamarin.forms

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

使用带有IServiceProvider的xamarin表单

我正在研究xamarin表单上的"依赖注入",并发现了一些使用类似的概念ContainerBuilder.在线发现的解决方案就是这样,讨论如何进行DI设置并将它们注入到视图模型中.但是,就个人而言,我没有发现这个或整个概念的视图模型和绑定非常整齐有几个原因.我宁愿创建可以被业务逻辑重用的服务,这似乎使代码更加清晰.我觉得实施一个IServiceProvider会导致更清洁的实施.我计划实现这样的服务提供商:

IServiceProvider Provider = new ServiceCollection()
                            .AddSingleton<OtherClass>()
                            .AddSingleton<MyClass>()
                            .BuildServiceProvider();
Run Code Online (Sandbox Code Playgroud)

首先,我不确定为什么没有这些的xamarin例子.所以,我不确定朝着这个方向走向是否有任何问题.我已经看过ServiceCollection课了.它来自的包Microsoft.Extensions.DependencyInjection,名称中没有"aspnetcore".然而,它的拥有者是"aspnet".我不完全确定它ServiceCollection是否仅适用于Web应用程序,或者将它用于移动应用程序是否有意义.

它是安全使用IServiceProviderServiceCollection只要我使用所有的单身?我有什么问题(在表现或公羊方面)我不知道了吗?

更新

在Nkosi的评论之后,我又看了一下链接并发现了一些事情:

  1. 文档链接大约在同一时间Microsoft.Extensions.DependencyInjection仍处于测试阶段
  2. 在文档中的"使用依赖注入容器的几个优点"下的列表中的所有点也适用于DependencyInjection我所见.
  3. Autofac 过程似乎围绕着我试图避免使用的ViewModels.

更新2

我设法在导航功能的帮助下将DI直接导入到后面的页面代码中,如下所示:

public static async Task<TPage> NavigateAsync<TPage>()
    where TPage : Page
{
    var scope = Provider.CreateScope();
    var scopeProvider = scope.ServiceProvider;
    var page = scopeProvider.GetService<TPage>();
    if (navigation != null) await navigation.PushAsync(page);
    return page;
}
Run Code Online (Sandbox Code Playgroud)

architecture dependency-injection service-provider xamarin.forms

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

函数 event.preventDefault() 在 android chrome 中不起作用

这是我面临的问题的一个简单示例:jsfiddle。您无法在 PC 上的文本字段中输入值。相同的代码在 android chrome 上不起作用。我可以在该字段中输入任何内容。

我试图防止在特定条件下将文本输入到文本框中

这是函数

function func(event, src){
    if (condition){
        alert(33);
        event.preventDefault();
    }
}
Run Code Online (Sandbox Code Playgroud)

我是这样使用它的:

<input onkeydown="func(event, $(this))" />
Run Code Online (Sandbox Code Playgroud)

该代码在 windows ie 和 chrome 上完美运行。但是,在 android 中的 chrome 上,它显示警报 33,但它不会阻止输入文本。我试过了event.stopPropagation();return false但输出仍然相同(仅显示警报)。

注意:$("input").keydown()由于一些其他功能,我无法使用。所以我只能通过 html 使用事件。

jquery android google-chrome event-handling

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

SQLite似乎不再可以在Xamarin Android上使用

我们有一个Xamarin.Forms项目,需要使用sqlite本地数据库来存储日期。来自不同PC的不同开发人员使用EF Core的sqlite库进行设置(vs 2019)。最初,它与Database.EnsureCreated()功能一起使用,后来与ef core的迁移一起使用。一切都进行了一个多月。

上周,由于sqlite出现错误,Android应用突然无法在任何人的PC上启动。它显示以下错误:

致命信号11(SIGSEGV),代码1(SEGV_MAPERR)

我花了一段时间尝试各种修复和回滚,认为这是代码的问题。其中包括以下内容:

  1. 删除的obj和bin文件夹,清理并重建以下所有步骤。
  2. 将ef的版本降级到2.2.3(我们开始使用的版本)
  3. 回滚到git提交最多一周
  4. 升级了ef core的依赖项版本
  5. 删除了过去的一些迁移
  6. 将Xamarin表格降级为3.6.x

在尝试了上述修复程序和其他修复程序之后,终于在上周五(在所有PC上)升级了Java和android SDK的版本。此修复程序奏效后,当天一切都会顺利进行。在星期二,问题再次出现(没有库更新或代码更改)。更深入地了解EF Cores日志记录表明,它在尝试连接到数据库时崩溃。

该问题可以在android设备上复制,但不能在模拟器上复制。我不确定我们是否需要请求android中的一些新权限。

我终于用sqlite设置创建了一个新的xamarin表单项目。我使用了pcl库和ef核心。我仍然发现相同的错误。

这是复制问题的git枢纽https://github.com/neville-nazerane/xamarin-site

更新资料

只是我注意到的东西。早些时候,我的数据库文件名为“ main.db”。现在,无论我将该文件名更改为什么或更改任何变量。它在日志中始终将数据库名称显示为“ main”。不知道更改数据库名称是否可以解决该问题。但是,从未找到更改此数据库名称的方法。我尝试了不同的连接字符串,它只是说“数据库”和“ db”是未知键

更新资料

复制步骤:

using (var db = new AppDbContext())
{
    db.Add(new Person {
        Age = 55, 
        Name = "Neville"
    });
    db.SaveChanges();
    Person[] alldata = db.People.ToArray();
}
Run Code Online (Sandbox Code Playgroud)

的定义PersonAppDbContext是相当明显的。因此,本着不让问题太长的精神,我不在此发布。但是,如果需要,我也可以发布它们。

xamarin.android xamarin.forms entity-framework-core sqlite-net-pcl

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

ef 核心忽略导航属性

我有一个实体User,它有两个属性CreatedBy并且UpdatedBy都引用User. 默认情况下,EF 假定这两者是一对一的关系。我收到以下错误消息:

消息:System.InvalidOperationException:无法确定在“User.CreatedBy”和“User.UpdatedBy”之间检测到的一对一关系的子/从属端。要识别关系的子/依赖方,请配置外键属性。如果这些导航不应该是同一关系的一部分,请在不指定反向的情况下配置它们。有关更多详细信息,请参阅http://go.microsoft.com/fwlink/?LinkId=724062

目前,我有一个这样的课程:

public class User
{

    public int Id { get; set; }

    public int? CreatedById { get; set; }
    public User CreatedBy { get; set; }

    public int? UpdatedById { get; set; }
    public User UpdatedBy { get; set; }

}
Run Code Online (Sandbox Code Playgroud)

基本上,这就是我正在尝试的:

  • created 和 updated 彼此没有关系(不需要导航/反向属性)
  • 任意数量的用户都可以拥有相同的CreatedBy,任意数量的用户都可以拥有相同的UpdatedBy

我怎样才能让 EF 忽略导航属性?我拥有的主要原因CreatedBy是我Include(u => u.CreatedBy)以后可以使用。我知道使用IEnumerable<User> AllCreatedUsers属性可以解决这个问题,但我不想为IEnumerable我的实体中的每个创建一个。有没有办法用流畅的 API …

c# navigation-properties entity-framework-core ef-fluent-api ef-core-2.0

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

dotnet-install.sh 未在 Ubuntu 上添加 dotnet 命令

我不是 Linux 用户,所以这可能很容易解决,但我尝试了以下方法:

  1. 首先,我使用curl -sSL https://dot.net/v1/dotnet-install.sh | bash /dev/stdin得到以下结果的命令安装它:

dotnet-install: .NET Core SDK 版本 2.1.403 已经安装。dotnet-install: 添加到当前进程 PATH:
/home/<!username!>/.dotnet。注意:此更改仅在采购脚本时可见。dotnet-install:安装成功完成。

  1. 我确实. ~/.profile要重新加载配置文件,但即使在此之后运行时,我也会dotnet收到以下错误:

找不到命令“dotnet”,但可以使用以下命令安装:sudo snap install dotnet-sdk`

我期待脚本做所有事情并dotnet提供。

linux bash ubuntu .net-core asp.net-core

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

使用 AuthenticateAsync 生成 JWT 令牌

我正在尝试使用登录ClaimsPrincipal,然后在 .net core 2.0 中获取 JWT。使用我当前的代码,我从 SignInAsync 函数的结果中得到错误:“没有配置 IAuthenticationSignInHandler 来处理方案的登录:Bearer”

这是我目前使用的控制器:

[Route("Login/{username}")]
public async Task<IActionResult> Login(string username)
{
    var userClaims = new List<Claim>
    {
        new Claim(ClaimTypes.Name, username)
    };
    var principal = new ClaimsPrincipal(new ClaimsIdentity(userClaims));
    var sign = HttpContext.SignInAsync(principal);
    await sign;
    var res = await HttpContext.AuthenticateAsync();
    var token = await HttpContext.GetTokenAsync("access_token");
    return Json(token);
}
Run Code Online (Sandbox Code Playgroud)

登录部分已经过测试,可以很好地与 cookie 配合使用。但是,当我JwtBearerDefaults.AuthenticationScheme在我的 startup.cs 中使用以下代码时:

services.AddAuthentication(config => {
    config.DefaultAuthenticateScheme = JwtBearerDefaults.AuthenticationScheme;
    config.DefaultChallengeScheme = JwtBearerDefaults.AuthenticationScheme;
})
.AddJwtBearer(config =>
{
    config.TokenValidationParameters = Token.tokenValidationParameters;
    config.RequireHttpsMetadata = …
Run Code Online (Sandbox Code Playgroud)

claims-based-identity claims jwt .net-core-2.0

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