小编Gui*_*rme的帖子

ASP.NET Core 3.0不在Visual Studio 2019上显示

我想测试新的Blazor服务器端框架(又名Razor组件)。

我按照此官方教程安装了Visual Studio 2019 RC,然后安装了.Net Core 3.0预览2 。

安装后,我仅在“创建新的ASP.NET Core Web应用程序”页面上看到ASP.NET Core 2.0和2.1。3.0未显示。

我开始四处乱搞,尝试从此页面安装其他软件包,卸载并重新安装Visual Studio 2019,更新为.NET Core Preview 3,以不同顺序安装了数倍于x64和x86软件包,然后复制/粘贴.Net Core二进制文件到随机文件夹等。没用。没有显示ASP.NET Core 3.0。

这是我的VS在创建项目时的样子(黄色消息在与软件包弄乱之后出现了,所以这不是真正的问题):

在此处输入图片说明

这是dotnet --list-sdks命令的输出:

在此处输入图片说明

编辑

由于某种原因,我安装了Blazor VSIX软件包(WebAssembly-并不是我想要的,但是无论如何我都安装了它),现在ASP.NET Core 3.0刚刚出现了。但是,仅针对blazor模板:

在此处输入图片说明

我不明白 有什么明显的我想念的吗?

.net-core asp.net-core visual-studio-2019 asp.net-core-3.0 .net-core-3.0

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

IEnumerable属性没有类型

我正在尝试从MSDN创建类似官方DataGrid.ItemsSource的属性:

public IEnumerable ItemsSource { get; set; }
Run Code Online (Sandbox Code Playgroud)

这在任何派生类中提供任何类型的支持.有了这个,我可以设置类似的东西

var list = new List<ObservableCollection<KeyValuePair<decimal, bool>>>();
MyDataGrid.ItemsSource = list;
Run Code Online (Sandbox Code Playgroud)

但是当我尝试在没有Type T的情况下创建IEnumerable的属性时,就像MSDN所说的那样,我在VisualStudio上遇到错误:

Using the generic type 'System.Collections.Generic.IEnumerable<T>' requires 1 type arguments
Run Code Online (Sandbox Code Playgroud)

那么,有什么不对?

c# wpf ienumerable properties itemssource

10
推荐指数
1
解决办法
2813
查看次数

将泛型<TObject>类传递给表单

我似乎无法通过搜索找到答案,所以这里......

我知道我可以通过利用这种类型的代码将Class对象一般传递给其他类:

public class ClsGeneric<TObject> where TObject : class
{
    public TObject GenericType { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

然后以这种方式构建:

ClsGeneric<MyType> someName = new ClsGeneric<MyType>()
Run Code Online (Sandbox Code Playgroud)

但是,我有一个应用程序,要求我打开一个表单,并以某种方式传递泛型类型以便在该表单中使用.我试图能够为许多不同的类类型重用此表单.

有谁知道这是否可能,如果可能,如何?

我已经使用Form构造函数进行了一些实验,但无济于事.

非常感谢,戴夫

更新:澄清我想要达到的结果是什么

在此输入图像描述

更新:今年4月4日,我进一步前进,但我提供了解决方案的赏金.这就是我现在拥有的:

interface IFormInterface
{
    DialogResult ShowDialog();
}


public class FormInterface<TObject> : SubForm, IFormInterface where TObject : class
{ }

public partial class Form1 : Form
{
    private FormController<Parent> _formController;

    public Form1()
    {
        InitializeComponent();
            _formController = new FormController<Parent>(this.btnShowSubForm, new DataController<Parent>(new MeContext()));   
    }
}

public class FormController<TObject> where TObject : class
{
    private …
Run Code Online (Sandbox Code Playgroud)

c# forms generic-programming tobject

10
推荐指数
2
解决办法
1188
查看次数

在 blazor 中改变组件属性的正确方法

我有两个组件,Child.razorParent.razor.

Child.razorHTML:

<input type="text" value="@Text" />
Run Code Online (Sandbox Code Playgroud)

Child.razorC#:

[Parameter] public string Text { get; set; }
Run Code Online (Sandbox Code Playgroud)

Parent.razorHTML:

<Child @ref="child_1" />
<Child @ref="child_2" />
<Child @ref="child_3" />
Run Code Online (Sandbox Code Playgroud)

Parent.razor C#:

Child child_1;
Child child_2;
Child child_3;

void SetText(Child item, string text)
{
    item.Text = text;
}
Run Code Online (Sandbox Code Playgroud)

我收到警告item.Text = text

警告 BL0005:不应在其组件之外设置组件参数“文本”。

经过一番谷歌搜索,我发现了这个问题:BL0005 - 外部参数使用 - 为什么会出现警告?

答案很好,但它没有提供替代方案(github 上的链接内容也不是很有帮助)。

从父级改变组件参数的正确方法是什么?

编辑

再澄清一点:我知道我可以使用绑定,但我需要能够更改SetText方法内的值,将我想要变异的 Child 作为参数传递。绑定的问题在于变量没有与组件绑定。换句话说:对于 Child 的引用,我不知道应该设置哪个绑定字符串。

例如:

<Child @ref="child_1" …
Run Code Online (Sandbox Code Playgroud)

c# razor asp.net-core blazor

9
推荐指数
1
解决办法
5342
查看次数

使用wrap检测TextBlock中的换行符数量?

有没有办法检测文本块中的换行符数TextWrapping="Wrap"

我正在考虑使用非等宽字体.我需要这个,因为我正在创建一个新的,个性化的MessageBox窗口,它有一个大文本标题,动画,我的应用程序的徽标和我的应用程序的主题.

很明显,我需要根据正文消息的LineBreak数量来改变窗口的大小 - 类似于默认MessageBox窗口的行为方式.

c# wpf xaml textblock word-wrap

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

UserControl依赖属性设计时间

我在WPF中创建一个简单的用户控件,其中包含一个Button内的TextBlock.

<UserControl x:Class="WpfExpansion.MyButton"..... >
    <Grid >
        <Button Background="Transparent" >
            <TextBlock Text="{Binding Path=Text}"/>
        </Button>
    </Grid>
</UserControl>
Run Code Online (Sandbox Code Playgroud)

还有"Text"依赖属性.

public partial class MyButton : UserControl
{
    public MyButton()
    {
        InitializeComponent();
        this.DataContext = this;         
    }

    public string Text
    {
        get { return (string)GetValue(TextProperty); }
        set { SetValue(TextProperty, value); }
    }
    public static readonly DependencyProperty TextProperty =
        DependencyProperty.Register("Text", typeof(string), typeof(MyButton), new PropertyMetadata(string.Empty));

}
Run Code Online (Sandbox Code Playgroud)

然后我像这样使用UserControl:

<MyButton Text="Test" />
Run Code Online (Sandbox Code Playgroud)

问题是Visual Studio设计没有改变,但它在运行时工作.

怎么了?

我也试过了

DataContext="{Binding RelativeSource={RelativeSource Self}}"
Run Code Online (Sandbox Code Playgroud)

在UC定义内部,没有成功.

c# wpf binding dependency-properties

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

WPF DataGrid - 刷新后保持滚动位置

任何人都知道如何在刷新命令后保持垂直滚动位置?

我的Datagrid从对象列表接收绑定.

非常感谢,对不起我的英语.

wpf datagrid scroll refresh wpfdatagrid

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

Razor 运行时重新编译似乎不适用于 *.razor 组件文件

我正在测试新的 Razor 组件(又名。服务器端 Blazor),我发现需要停止项目、编辑、重新编译和重新启动服务器,非常耗时。我想编辑 *.razor 文件,保存,在浏览器上按 F5,然后完成。

我知道ASP.NET Core 3 上有一个重大更改,暂时阻止了这种情况的发生。但是现在,有一个“修复”:您只需要安装 package Microsoft.AspNetCore.Mvc.Razor.RuntimeCompilation,并像这样设置服务:

services.AddMvc()
.AddRazorRuntimeCompilation();
Run Code Online (Sandbox Code Playgroud)

(是的,没有 Mvc,请看这个

但这似乎不起作用 - 至少,我没有尝试使用 cshtml 文件,因为我只在测试中使用 *.razor。

我也做了:

services.AddMvc()
.AddRazorRuntimeCompilation((options) =>
{
    foreach (var item in Directory.GetFiles(Directory.GetCurrentDirectory(), "*.razor", SearchOption.AllDirectories))
    {
        options.AdditionalReferencePaths.Add(item);
    }
});
Run Code Online (Sandbox Code Playgroud)

没有任何运气。

这还不支持还是我做错了什么?

c# asp.net-core razor-components

5
推荐指数
0
解决办法
2654
查看次数

具有 2 个处理程序的事件 Func&lt;bool&gt;:哪个返回符合预期?

假设我有课程AB

在课堂上A,我发生了以下事件:

public event Func<bool> MyEvent;
Run Code Online (Sandbox Code Playgroud)

以及以下方法:

public bool GetResult()
{
    return MyEvent();
}
Run Code Online (Sandbox Code Playgroud)

在类中B,我有以下构造函数:

public B()
{
    A a = new A();
    a.MyEvent += a_MyEvent_one;
    a.MyEvent += a_MyEvent_two;

    bool result = a.GetResult();
}

private bool a_MyEvent_one()
{
    return true;
}

private bool a_MyEvent_two()
{
    return false;
}
Run Code Online (Sandbox Code Playgroud)

那么, class 的构造函数末尾会出现什么结果B,为什么?

c# syntax events func event-handling

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

如何配置两个JSON序列化器并根据路由选择正确的一个

我有一个使用 .Net Framework 4.7 的 ASP.NET Core Web API 项目,我正在升级到 .Net Core 3.1。我升级的原因之一是使用新的 System.Text.Json 序列化程序。

目前,我有一些基于路由的 API 版本,例如:

/api/v1/controller
/api/v2/controller
Run Code Online (Sandbox Code Playgroud)

我将创建一个新的 (v3) 来使用新的序列化程序。但问题是:我想在旧路由上继续使用 JSON.Net,以避免集成客户端出现任何可能的格式问题。

有没有一种简单的方法来配置 Asp.Net Core 以根据路由自动选择正确的 JSON 序列化程序?

.net c# json.net asp.net-core system.text.json

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