Как я могу использовать значения атрибутов HTML - PullRequest
0 голосов
/ 19 октября 2018

В следующем коде у меня есть значения min = 0, max = 99, дублированные в методах Html.EditorFor().Какой лучший способ сделать это более СУХОЙ?

<div id="Team1PlayerScores">
    @for (int i = 0; i < Model.Team1.Players.Count; i++)
    {
        @Html.DisplayFor(m => Model.Team1.Players[i].Name)
        @Html.EditorFor(m => Model.Team1.Players[i].GoalsForCurrentGame, new { htmlAttributes = new { min = 0, max = 99, onchange = "updateTeamScore('Team1PlayerScores', 'Team1_GoalsForCurrentGame')" } })
    }
</div>

<div id="Team2PlayerScores">
    @for (int i = 0; i < Model.Team2.Players.Count; i++)
    {
        @Html.DisplayFor(m => Model.Team2.Players[i].Name)
        @Html.EditorFor(m => Model.Team2.Players[i].GoalsForCurrentGame, new { htmlAttributes = new { min = 0, max = 99, onchange = "updateTeamScore('Team2PlayerScores', 'Team2_GoalsForCurrentGame')" } })
    }
</div>

1 Ответ

0 голосов
/ 19 октября 2018

Если ваше намерение состоит в том, чтобы удалить дублирование «магических чисел» в вашем коде, а не в сгенерированном HTML, вы можете заменить числа значениями из вашей модели:

public class IndexModel
{
    public Team Team1 { get; set; }
    public Team Team2 { get; set; }

    public int MinimumGoals => 0;
    public int MaximumGoals => 99;
}

Иобновите представление, чтобы использовать его:

<div id="Team1PlayerScores">
    @for (int i = 0; i < Model.Team1.Players.Count; i++)
    {
        @Html.DisplayFor(m => Model.Team1.Players[i].Name)
        @Html.EditorFor(m => Model.Team1.Players[i].GoalsForCurrentGame, 
         new { htmlAttributes = new { min = Model.MinimumGoals, max = Model.MaximumGoals, 
         onchange = "updateTeamScore('Team1PlayerScores', 'Team1_GoalsForCurrentGame')" } })
    }
</div>

<div id="Team2PlayerScores">
    @for (int i = 0; i < Model.Team2.Players.Count; i++)
    {
        @Html.DisplayFor(m => Model.Team2.Players[i].Name)
        @Html.EditorFor(m => Model.Team2.Players[i].GoalsForCurrentGame, 
         new { htmlAttributes = new { min = Model.MinimumGoals, max = Model.MaximumGoals,
         onchange = "updateTeamScore('Team2PlayerScores', 'Team2_GoalsForCurrentGame')" } })
    }
</div>

Я отбросил значения в свойствах только для чтения, но как вы их внедрите в модель, решать только вам.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...