Динамическое назначение asp для переменных - PullRequest
0 голосов
/ 08 марта 2020

У меня есть форма с полями ввода, которые я хотел бы назначить 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")

Есть ли Как я могу это сделать?

Ответы [ 2 ]

1 голос
/ 09 марта 2020

Атрибут asp-for тега-помощника является ModelExpression, что означает, что помощник тега будет смотреть на синтаксическое выражение , чтобы оценить, с каким свойством связывается входной элемент. Это также означает, что вы не сможете динамически заполнить это свойство.

Вместо этого вы должны динамически переключать элемент ввода в вашем представлении:

@if (Model.Skill.Type == "Str")
{
    <input asp-for="Str" />
}
else if (Model.Skill.Type == "Dex")
{
    <input asp-for="Dex" />
}
0 голосов
/ 08 марта 2020

Сохраняйте свои логики c, решая, какое поле использовать в вашей модели. Вам следует создать свойство InputValue и использовать его для asp -for.

Затем использовать его следующим образом

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