小编tom*_*dox的帖子

将服务器端Blazor添加到现有的MVC Core应用程序

我在同一解决方案中有一个完全可操作的Blazor服务器端项目和一个.NET Core 3 MVC项目。我现在正在尝试在我的MVC项目中使用Blazor项目中的组件。

我设法将组件呈现在MVC页面上,但是Blazor组件上的按钮单击不会触发组件的onclick事件,而是直接导航到https:// localhost:44341 /

我不清楚我需要在MVC解决方案中进行哪些更改才能使其正常工作?官方文档讨论了在MVC项目中使用组件的问题,并且与Dan Roth的视频聊天中提到了它,但是都没有详细介绍如何实现。

任何人都可以向我介绍如何将服务器端Blazor改造为MVC项目的完整步骤(或为我提供示例)吗?

我尝试过的

我的Blazor项目仍然具有标准模板的Counter组件,因此我尝试通过引用Blazor项目并将其添加到我的MVC解决方案中,然后将其添加到我的index.cshtml文件中:

<div id="Counter">
  @(await Html.RenderComponentAsync<Counter>())
</div>
Run Code Online (Sandbox Code Playgroud)

可以正确渲染,但单击按钮不起作用。

我已将JS文件添加到MVC应用程序的_Layout页面:

<script src="_framework/blazor.server.js"></script>
Run Code Online (Sandbox Code Playgroud)

在MVC项目的Startup.cs文件中打开“服务器端Blazor”:

services.AddServerSideBlazor();
Run Code Online (Sandbox Code Playgroud)

我还向MVC项目添加了Pages和Shared目录,并复制了_Imports和MainLayout文件-不确定是否需要这样做。

如果这样做没有做,我尝试从所有Blazor模板(客户端,客户端托管和服务器端)中分解新项目以寻找线索,但是所有这些示例都设置为具有单个Blazor的完整SPA。入口点(App文件)托管在.html文件中,而我想在许多不同的现有MVC页面上呈现Blazor组件。

然后,我尝试将这些项目的一部分(以及我的Blazor项目的一部分)添加到MVC项目中,但是无法使其完全正常工作。

我也尝试按照这里的答案进行操作,但这是将Blazor组件文件添加到MVC项目中的工作,而我的Blazor文件当前(大多数情况下)在另一个项目中。

迄今为止我实验中的随机问题

  • 我已经services.AddServerSideBlazor();在MVC应用程序的Startup.cs中添加了。还有什么需要的吗?
  • 我的MVC应用仍然是传统的AspNetCore.Routing,如果仅将组件放在现有的MVC页面上(我将没有Blazor页面,而只有Blazor组件),是否仍需要切换到Core 3的端点路由。
  • 浏览器中运行的blazor javascript文件与之通信的Blazor的服务器端部分是否需要通过端点路由?我从js文件的浏览器中收到404。
  • 如果我只是托管组件,是否仍需要“ App”(App.razor)类/页面作为入口点?
  • 如果是这样,我是否需要将<app>@(await Html.RenderComponentAsync<App>())</app>_Host.cshtml中的行放在我的MVC项目中的某个位置?
  • 我是否需要从我的MVC项目中的Blazor项目中复制Pages和Shared文件夹,以及两个_Imports.razor文件和MainLayout.razor文件?
  • 我认为Blazor现在是Microsoft.NETCore.Platforms文件的一部分(在MVC项目的SDK节点下引用),所以我是否认为我不需要为MVC项目的Blazor添加单独的NuGet包?

c# blazor blazor-server-side

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

ASP.NET MVC 6 依赖注入

我有代码,

public class VendorManagementController : Controller
{
    private readonly IVendorRespository _vendorRespository;

    public VendorManagementController()
    {
        _vendorRespository = new VendorRespository();
    }
Run Code Online (Sandbox Code Playgroud)

现在我想使用依赖注入。所以代码将是

public class VendorManagementController : Controller
{
    private readonly IVendorRespository _vendorRespository;

    public VendorManagementController(IVendorRespository vendorRespositor)
    {
        _vendorRespository = vendorRespositor;
    }
Run Code Online (Sandbox Code Playgroud)

我的问题是,我找不到可以创建VendorRespository对象的地方以及如何将其传递给VendorManagementController已定义的参数化构造VendorManagementController(IVendorRespository vendorRespositor)函数?

c# asp.net asp.net-mvc dependency-injection

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

反应混合的ES6替代品

在使用ES6类时,我正在寻找React mixins的替代品.

我想在我的react组件中注入一些函数,但这些函数需要React元素.

React ES5使用了mixin,但React Classes不支持mixins.React类中mixins的替代方法是什么?

ecmascript-6 reactjs

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

当解决方案有多个启动项目时,指定在 Visual Studio 中使用哪个模拟器

我有一个解决方案,其中包含一个 Xamarin 表单应用程序和一个为该应用程序提供后端的 WebAPI 2 服务。

当我将解决方案设置为具有单个启动项目时,我可以使用工具栏中的下拉列表来选择应将项目部署到哪个设备/模拟器,但是当我选择多个启动项目时,我无法再选择模拟器/设备(模拟器的下拉列表消失)。因为没有部署目标,所以构建失败。

是否有另一种方法来指定 Android 项目应该在哪个模拟器/设备上启动(可能在代码中,例如在项目文件中?)。

visual-studio xamarin xamarin.forms

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

如何在 Entity Framework Core 中对事务进行单元测试?

我有一个在事务中做一些工作的方法:

public async Task<int> AddAsync(Item item)
{
    int result;

    using (var transaction = await _context.Database.BeginTransactionAsync())
    {
        _context.Add(item);

        // Save the item so it has an ItemId
        result = await _context.SaveChangesAsync();

        // perform some actions using that new item's ItemId
        _otherRepository.Execute(item.ItemId);

        transaction.Commit();
    }

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

我想添加单元测试来检查如果_context.SaveChangesAsync_otherRepository.Execute失败则事务会回滚,这可能吗?

我看不到使用InMemorySQLite来做到这一点的方法吗?

sqlite unit-testing transactions in-memory-database entity-framework-core

5
推荐指数
2
解决办法
9139
查看次数

使.NET标准库成为COM-Visible?

对于完整的.NET项目,您可以在以下复选框中打勾,以使该项目在COM中可见Project Properties > Application tab > Assembly Information..

在此处输入图片说明

但是,Assembly Information..对于.NET Standard项目,该按钮不存在,而是在上输入了数据Project Properties > Package tab,但该选项卡没有以下复选框Make Assembly COM-Visible

在此处输入图片说明

您仍然可以通过其他方法使.NET标准库COM可见,还是出于某种原因这样做没有意义?

.net-standard

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

有Microsoft Graph MS Word API吗?

目前,Office 365版本的Word实际上是否有任何Graph API端点?

(如果没有,他们有计划吗?)

我看过的地方

我发现了文档中的Excel图形API在图形API的Outlook在图形API的OneNote,但我无法找到一个词API的任何提及。

Graph Overview Official文档的Productivity部分中没有提到Word 。

Graph Explorer Samples中没有任何迹象:

图资源管理器样本列表

Microsoft Graph GitHub存储库中似乎没有与Word相关的子项目。

旁注

此问题询问有关Office 365 API的类似问题。我不确定Graph API是否是Office 365 API的更名,根据官方文档,这似乎已经寿终正寝了

最终,我们正在寻找的是Office PIA的替代品,我们可以在Azure托管的Web应用程序中使用它来构建Word文档。我们一直在使用Open XML,但是我们需要OpenXML不支持的动态页面编号。

ms-word office365 microsoft-graph

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

在Visual Studio 2019中保存项目文件会还原csproj文件中的更改

我正在使用Microsoft Visual Studio Professional 2019 RC版本16.0.0(VisualStudio.16.Release / 16.0.0 + 28729.10),发现在保存项目文件时间歇性地撤消了对项目文件的更改。

当我添加的NuGet包消失或更新的版本恢复到以前的版本时,这已经证明有点令人困惑。

同样,如果我在项目中包含了文件,那么保存后它们将不再包含在文件中,因此看起来更改没有正确地添加到csproj文件中?

还有其他人遇到这种情况吗,有人知道为什么会这样吗?

visual-studio-2019

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

如何使 Blazor HTTP Get JSON ASYNC 请求?

我正在尝试在示例应用程序中实现一个小的 crud。

我在应用程序中使用 blazor,但发现服务器调用存在一些问题。

我创建了一个简单的 API 控制器,名称为 Employee,方法为 HTTP 动词。

 [ApiController]
    [Route("[controller]")]
    public class EmployeeController : ControllerBase
    {
        EmployeeRepository objemployee = new EmployeeRepository();   
        [HttpGet]
        [Route("api/Employee/Index")]
        public IEnumerable<Employee> Index()
        {
            return objemployee.GetAllEmployees();
        }
   }  
Run Code Online (Sandbox Code Playgroud)

empList = await Http.GetJsonAsync<Employee[]>("/api/Employee/Index"); 
Run Code Online (Sandbox Code Playgroud)

line 报告了一个问题,我不知道它,因为我是 blazor 的新手。我应该在我的代码中做什么?

用asp构建的应用程序。Net core 3.0”、“blazor preview 9”。

输出:我尝试遵循指南并查找示例实现,但无法解决问题。

我收到以下异常:

  WASM: Unhandled exception rendering component:
d.printErr @ blazor.webassembly.js:1
blazor.webassembly.js:1 WASM: 
    System.Text.Json.JsonException: 
    '<' is an invalid start of a value. Path: $ | LineNumber: 0 | BytePositionInLine: 0. ---> 
    System.Text.Json.JsonReaderException: '<' is …
Run Code Online (Sandbox Code Playgroud)

c# asp.net-web-api asp.net-core blazor blazor-webassembly

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

Blazor 页面和 razor 页面内的组件代码?(西装外套图案)

在 razor 页面中处理 Blazor 时是否有一些特定的代码编写模式?我看到有关 Blazor 的所有示例都将 HTML/Razor/CSS 和 C# 代码放在同一个文件中,例如:

<div class="text">@sometext</div>

<style> .text{ color:black; } </style>

@code{
   sometext = "text.."
}
Run Code Online (Sandbox Code Playgroud)

是否有某种模式可以像 MVC 一样将 C# 和 HTML 分开?我将@code{}页面的大部分逻辑移至单独的服务类。

我有兴趣听到不同的方法,最佳实践是什么?

c# .net-core blazor

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