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