动态分配 asp-for 变量

Dynamically assigning asp-for variables

我有一个带有输入框的表单,我想动态分配 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")

有什么办法可以做到吗?

保持您决定在模型中使用哪个字段的逻辑。您应该创建一个 属性 InputValue 并将其用于 asp-for.

那就这样用吧

public int InputValue
{
    set
    {
        if (Skill.Type == "Str")
        {
            Str = value;
        }
        else
        {
            Dex = value;
        }
    }
}

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

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

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