HTML вспомогательный метод для создания многих выпадающих - PullRequest
0 голосов
/ 16 января 2019

У меня есть следующее представление:

@model Entities.Models.Tournament

@using (Html.BeginForm("Index", "Game"))
{        
    <table>
        <tr>
            <td><label>Team</label></td>
            <td><label>Points Brought To Tournament</label></td>
        </tr>
        @{
            const int maxNumOfTeams = 8;
            for (int i = 0; i < maxNumOfTeams; i++)
            {
                <tr>
                    <td>@Html.DropDownList("SelectedTeams[" + i + "].TeamId", Model.Teams, "Please select:")</td>
                    <td>@Html.TextBox("SelectedTeams[" + i + "].Points", "", new { type = "number" })</td>
                </tr>
            }
        }
    </table>    
    <input type="submit" value="Create game" />
}

Существует ли более элегантный / лучший метод создания 8 выпадающих списков, которые затем используются для создания List<T> и отправки его в метод действияиспользуя HTTP Post?

То, как я это делаю, теперь выглядит неопрятно, так как мне приходится создавать html-строку выпадающего списка с использованием конкатенации и переменной i.

Вот модель:

public class Tournament
{
    //This is populated with teams from the DB and then used in the view to allow the user to select a team
    public IEnumerable<SelectListItem> Teams { get; set; } 

    //This represents the teams the user selected
    public List<TeamWithPointsBroughtForward> SelectedTeams { get; set; }
}

public class TeamWithPointsBroughtForward
{
    public int TeamId { get; set; }
    public int Points { get; set; }
}

Вот контроллер и метод действия:

public class GameController : Controller
{        
    public ActionResult Index(Tournament tournament)
    {            
        Game game = new Game();
        //TODO: set up the game object based on the tournament settings

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