我根据列表的内容动态填充下拉列表的值。当选择下拉列表中的某个项目时,会显示删除该项目的选项。当项目被删除时,它首先从列表中删除,然后重建下拉列表,这就是我遇到问题的地方。重建下拉列表时,不会将其返回到默认值,而是将删除的下拉列表下方的值显示为已选择(这种情况会在@onchange 值被触发时发生)。重建时如何使下拉列表恢复到默认值?
这是一些代码,Razor 代码:
<select class="form-control" @onchange="selectedValue">
<option value="">select one</option>
@foreach (var mod in values)
{
<option value="@mod.Id">@mod.Name</option>
}
</select>
Run Code Online (Sandbox Code Playgroud)
填充列表的名为 Items 的类:
public class Items
{
public string Name { get; set; }
public int Id { get; set; }
public Items(string name, int id)
{
Name = name;
Id = id;
}
}
Run Code Online (Sandbox Code Playgroud)
列表本身(在填充之前):
public List<Items> itm = new List<Items>();
Run Code Online (Sandbox Code Playgroud)
名为 onchange 的函数:
public string SelectedValue = "";
public void selectedValue(ChangeEventArgs selectEvent)
{
SelectedValue = selectEvent.Value.ToString(); …Run Code Online (Sandbox Code Playgroud) html-select onchange drop-down-menu blazor blazor-server-side
我正在尝试使用 Blazor 为类内的属性构建输入字段的动态列表,但无法弄清楚如何将输入框的内容绑定/链接到类的属性。(该类可以有大量的公共道具,不仅是下面例子中的 Name 和 Description,它们并不总是“string”类型)
可以说我有这个类/模型:
public class customer{
public string Name { get; set; }
public int Age { get; set; }
public string Description { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
我得到了这个 blazor 组件(updateC.razor):
@inherits CLogic
@if (nfo != null)
{
@foreach (var obj in nfo)
{
<input type="text" class="form-control"
bind=@SCustomer.GetType().GetProperty(obj.ToString())/>
}
}
Run Code Online (Sandbox Code Playgroud)
最后是 Clogic:
public class Clogic: ComponentBase{
[Parameter]
public Customer SCustomer { get; set; } = new Customer();
[Parameter]
public PropertyInfo[] nfo { get; …Run Code Online (Sandbox Code Playgroud) 我无法让 Visual Studio 使用.NET 5。
以下是我目前的配置:Visual Studio Professional 2019 版本:16.7.6
.NET sdk:dotnet-sdk-5.0.100-preview.7.20366.6-win-x64 (有关更多信息,请参见图片)
Visual Studio 设置:
我在 VS 中选择了“使用 .NET Core SDK 的预览” (参见图片)

我的问题的可能来源: 我不小心安装了 .NET 5 的预览版 8,此版本不支持我的 Visual Studio 版本。我删除了这个版本并安装了正确的版本(预览版 7 应该支持 VS 16.7,请参阅:https : //dotnet.microsoft.com/download/dotnet/5.0)
这些是我用来重现我的问题的步骤:
在 Visual Studio 中,我执行以下操作来创建 .net 5 项目(blazor 项目):

6.项目现已创建,但立即显示错误消息“未找到 .NETFramework 的参考程序集,版本 = v5.0。...”(见图)

7. 右键单击项目 -> …
这可能很容易,但我有点卡住了。我正在从数据库读取数据,需要一个复选框来反映布尔值的当前状态,我可以在代码中获取状态,但无法弄清楚如何添加或删除复选框输入的“checked”属性。我正在使用@onchange来调用函数,但不能使用@Bind。我假设我可以创建一个返回值“”或“checked”的函数,然后在标签内部调用它,但这不起作用。
这是我的输入:
<input type="checkbox" class="form-control" value="test" @BoolChecker() @onchange="@function1()" />
Run Code Online (Sandbox Code Playgroud)
这是函数 BoolChecker():
public string BoolChecker()
{
if (mybool != null) {
return (mybool == true) ? "checked" : "");
}
else
{
return "";
}
}
Run Code Online (Sandbox Code Playgroud)
我可以在哪里放置 BoolChecker 函数来完成这项工作?如果不清楚,如果 BoolChecker 函数返回“checked”(并且 mybool 为 true),则假设使复选框显示为选中状态
blazor ×3
c# ×2
.net ×1
.net-5 ×1
.net-core ×1
checkbox ×1
components ×1
data-binding ×1
html-select ×1
installation ×1
onchange ×1
razor ×1