小编tom*_*dox的帖子

将一个简单的C#DLL转换为COM互操作组件

如何将C#DLL转换为可由VB6应用程序使用的COM互操作DLL?

.net c# com interop com-interop

65
推荐指数
3
解决办法
7万
查看次数

Blazor 链接 - 如果有 onclick 方法,则禁用 href

在 Blazor 中,我有一个<a>同时具有 ahrefonclick方法的元素:

<a href="" onclick="@(() => ChangePage(_someObject))">Test</a>
Run Code Online (Sandbox Code Playgroud)

onclick 调用这个方法:

  private bool ChangePage(object objectToDisplay)
  {
    _currentObject = objectToDisplay;
    StateHasChanged();

    return false;
  }
Run Code Online (Sandbox Code Playgroud)

通常在 JavaScript 中,从 event 方法返回 false 会停止后续导航到 中的链接href但这似乎不适用于我上面的代码。

单击链接后,如何阻止 Blazor 将页面更改为根 url?

(这里显而易见的答案是href完全删除,但我正在使用引导 Pill 中的链接并删除 Pillhref工作的停止)

我尝试过的其他方法不起作用:

  • <a>元素更改为跨度并设置data-target属性,但这会正确停止 Pills 渲染。
  • 添加returnonclick事件中(根据此答案):onclick="return @(() => ChangePage(_overviewModel))"但这不会编译。
  • returnonclick事件之后添加:onclick="@(() => ChangePage(_overviewModel)); …

c# blazor blazor-server-side

29
推荐指数
4
解决办法
2万
查看次数

VS 2017中的创建单元测试在哪里?

我知道之前已经问过这个问题,看来这个功能在某些时候已经从VS中删除了.但我现在正在查看Microsoft 教程,并说VS 2017中应该有一个创建单元测试功能.

我正在尝试测试ASP.NET Core MVC控制器.我已经按照创建测试项目的步骤进行了操作.但是当我右键单击命名空间/类/方法时,我仍然看不到任何这样的选项.

编辑:我正在使用Visual Studio 2017社区版

c# unit-testing visual-studio .net-core visual-studio-2017

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

“无法从 Blazor 中的绑定属性‘绑定值’推断出属性名称”

我刚刚将 Blazor 项目从 Core 3 Preview 6 迁移到了 Preview 8,现在出现此错误:

无法从绑定属性“绑定值”推断出属性名称。绑定属性应采用“bind”或“bind-value”形式,以及相应的可选参数,如“bind-value:event”、“bind:format”等。

我已经隔离了导致这种情况发生的组件,并且代码似乎bind-value按照错误消息中的说明进行了设置:

      <TelerikDropdownList Data="@State.ContainerSizes" 
                           ValueField=@nameof(ContainerSize.ContainerSizeId)
                           TextField=@nameof(ContainerSize.ContainerSizeName)
                           @bind-Value="@ContainerSizeIdNoNull"
                           >
      </TelerikDropdownList>
Run Code Online (Sandbox Code Playgroud)

我试过删除@from@bind-Value和更改大写@bind-Value等,但都无济于事。

什么可能导致这种情况?

c# blazor

23
推荐指数
4
解决办法
8591
查看次数

迁移到Swashbuckle.AspNetCore版本5

我正在尝试在.NET Core 3 Preview 5 Web API项目中从Swashbuckle的4.0.1版本迁移到5.0.0-rc2。

我已经完成了项目的编译,并且Swagger UI正常运行,但是我无法使Bearer身份验证正常工作,这是由于我没有正确设置新格式的安全性。

这是我在版本4中使用的旧代码:

c.AddSecurityDefinition("Bearer", new ApiKeyScheme
{
    Description = "JWT Authorization header using the Bearer scheme. \r\n\r\n Enter 'Bearer' [space] and then your token in the text input below.\r\n\r\nExample: \"Bearer 12345abcdef\"",
    Name = "Authorization",
    In = "header",
    Type = "apiKey"
});

var security = new Dictionary<string, IEnumerable<string>>
{
    {"Bearer", new string[] { }},
};

c.AddSecurityRequirement(security);
Run Code Online (Sandbox Code Playgroud)

这就是我将其更改为v5的内容:

c.AddSecurityDefinition("Bearer", new OpenApiSecurityScheme
{
    Description = "JWT Authorization header using the Bearer scheme. \r\n\r\n Enter 'Bearer' [space] …
Run Code Online (Sandbox Code Playgroud)

c# swagger-ui swashbuckle

20
推荐指数
3
解决办法
5035
查看次数

如何使用带有事务的内存数据库进行单元测试时,如何抑制InMemoryEventId.TransactionIgnoredWarning?

我正在使用EF Core内存数据库,我正在尝试对使用事务的方法运行单元测试:

    using (var transaction = await _context.Database.BeginTransactionAsync())
    {
        _context.Update(item);
        result = await _context.SaveChangesAsync();

        // some other stuff

        transaction.Commit();
    }
Run Code Online (Sandbox Code Playgroud)

但是,我从测试运行器中收到此错误:

System.InvalidOperationException:警告为"InMemoryEventId.TransactionIgnoredWarning"的错误异常:内存存储不支持事务.请参阅 http://go.microsoft.com/fwlink/?LinkId=800142要禁止此异常,请使用DbContextOptionsBuilder.ConfigureWarnings API.重写DbContext.OnConfiguring方法或在应用程序服务提供程序上使用AddDbContext时,可以使用ConfigureWarnings.

如何抑制该错误?

c# in-memory-database entity-framework-core asp.net-core

18
推荐指数
2
解决办法
3526
查看次数

ViewModel概念在ASP.NET MVC Core中是否仍然存在?

在以前的ASP.NET MVC版本中,您可以找到有关ViewModel的一些信息以及如何在此版本中使用它们.

我想知道为什么我在ASP.NET Core MVC中找不到关于这个主题的任何信息?这个概念是否仍然存在,如果需要,我需要把它们放在哪里?

问题出现了,因为我想为项目制作仪表板.项目是我的网络应用程序的主要入口点.他们有许多关系,例如里程碑.

楷模:

public class Project
{
    public int ProjectId { get; set; }
    public string Name { get; set; }

    public ICollection<Milestone> Milestones { get; set; }
    ...
}

public class Milestone
{
    public int MilestoneId { get; set; }
    public string Name { get; set; }
    public string Description { get; set; }
    public DateTime Deadline { get; set; }
    public int? ParentId { get; set; }
    public Milestone Parent { get; set; } …
Run Code Online (Sandbox Code Playgroud)

asp.net-core-mvc asp.net-core

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

Visual Studio 2017中缺少创建单元测试上下文菜单选项?

我的VS2017副本中似乎缺少"创建单元测试"上下文菜单选项.

我知道有一点历史的它被删除,在VS2015然后重新添加多哗然,但据我可以从告诉了VS2017微软的文档应该是有吧?

我正在处理的解决方案包含一个ASP.NET Web API 2应用程序,一个C#类库和几个测试项目,所有这些都是针对.NET Framework 4.5.1的.(我知道这个选项不应该出现在Microsoft Developer Community论坛上讨论的 .Net Core或.Net Standard项目).

我已经尝试右键单击代码窗口中的类名和方法名,类名称选项卡和解决方案资源管理器中的类文件都无济于事.

编辑:我的VS副本中已经安装了"测试工具核心功能":

在此输入图像描述

编辑2:我可以确认现在修复了VS的最新版本.

c# visual-studio-2017

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

如何打开CircuitOptions.DetailedErrors?

运行服务器端Blazor应用程序时,我在控制台中收到此消息:

错误:当前电路中存在未处理的异常,因此该电路将被终止。有关更多详细信息,请在“ CircuitOptions.DetailedErrors”中打开详细的异常

我看过Blazor错误处理文档,但无法弄清楚如何真正打开该消息中提到的详细错误?

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

14
推荐指数
3
解决办法
3487
查看次数

带有索引参数的 Blazor/razor onclick 事件

我有下面的代码,但是当我单击该<tr>元素时传递的索引参数始终为 9。

这是因为表中有 9 行作为数据传递给组件。所以看起来索引总是最后设置的变量“i”的值...在这种情况下,foreach循环中最后一行之后的i的值是9,所以我在单击所有按钮时得到索引参数为9表中的行...

我的代码中的问题是什么,没有i为每行 onclick 设置值。

    <table border="1">

        @for(int i=0;i< ListData.DataView.Table.Rows.Count; i++)
        {
            <tr @onclick="(() => RowSelect(i))">
                @foreach (ModelColumn col in ListData.ListColumns)
                {
                    <td>@ListData.DataView.Table.Rows[i][col.Name]</td>
                }
            </tr>
        }

    </table>
Run Code Online (Sandbox Code Playgroud)
@code {
 
    private async Task  RowSelect(int rowIndex)
    {
        await ListRowSelected.InvokeAsync(rowIndex);
    }
}
Run Code Online (Sandbox Code Playgroud)

c# razor-pages blazor-server-side

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