首页 > 解决方案 > 动态分配 asp-for 变量

问题描述

我有一个带有输入框的表单,我想asp-for动态分配:

形式

@model Character
<input type="text" asp-for="@(// If Skill.Type == "Str" then use Str)" />

特点

public int Str { get; set; }
public int Dex { get; set; }

public (string Name, string Type) Skill { get; set; } = ("Uppercut", "Str")

有什么办法可以做到吗?

标签: c#asp.net-coreasp.net-core-3.1

解决方案


asp-for标签助手属性是一个,这ModelExpression意味着标签助手将查看语法表达式以评估输入元素绑定到的属性。这也意味着您将无法动态填充该属性。

您应该做的是在您的视图中动态切换输入元素:

@if (Model.Skill.Type == "Str")
{
    <input asp-for="Str" />
}
else if (Model.Skill.Type == "Dex")
{
    <input asp-for="Dex" />
}

推荐阅读