Размещать сложный объект на контроллере - PullRequest
0 голосов
/ 18 апреля 2019

Недавно пытаюсь обновить мой код до ядра asp.net с mvc5. Я пытаюсь опубликовать сложный объект из вида бритвы на моем контроллере, но ничего не опубликовано.Что я полагаю для того, чтобы это работало?

Моя виртуальная машина Matchresult при публикации всегда пуста.@ Html.TextBoxFor (x => x.SetResults [i] .Team1Result) в цикле for это правильно?Мои модели и модели

 public class Match
{
    [Key]
    public int MatchID { get; set; }
    public DateTime Matchdate { get; set; }
    public string MatchNote { get; set; }
    public int RoundID { get; set; }
    public virtual Round MatchBelongsToRound { get; set; }


    public int? Team1Id { get; set; }
    public virtual Team Team1 { get; set; }


    public int? Team2Id { get; set; }
    public virtual Team Team2 { get; set; }

    public int? WinningTeamId { get; set; }
    public virtual Team WinningTeam { get; set; }
    public int? DivisionID { get; set; }
    public virtual Division Division { get; set; }
    public bool isPlayed { get; set; }






}

 public class SetResult
{
    public int SetResultID { get; set; }
    public int Team1Result { get; set; }
    public int? Team1Id { get; set; }
    public virtual Team Team1 { get; set; }
    public int Team2Result { get; set; }
    public int? Team2Id { get; set; }
    public virtual Team Team2 { get; set; }
    public int? MatchID { get; set; }
    public virtual Match Match { get; set; }
    public int SetOrder { get; set; }

}


 public class MatchResultVM
{
    public MatchResultVM()
    {
        SetResults = new List<SetResult>();
    }

    public virtual Match Match { get; set; }
    public virtual List<SetResult> SetResults { get; set; }
}
 [HttpPost]
    public IActionResult labb([FromForm] MatchResultVM vm)
    {

        return RedirectToAction("labb/5");
    }

1 Ответ

0 голосов
/ 19 апреля 2019

Похоже на публикацию мне проблемы с вложенной моделью.Убедитесь, что атрибут name для всех свойств модели задан с использованием вложенной нотации с использованием.оператор например SetResults[0].Team1Result.Это должно быть обработано вспомогательными методами @Html автоматически.Проверьте, правильно ли вы генерируете HTML для модели, как показано ниже:

@model MatchResultVM

for (var i = 0; i < Model.SetResults.Count(); i++)
{
    @Html.TextBoxFor(x => Model.SetResults[i].Team1Result)
    @Html.TextBoxFor(x => Model.SetResults[i].Team2Result)
    ...  
}

Приведенный выше код должен генерировать HTML, как показано ниже:

<input name="SetResults[0].Team1Result" id="SetResults_0__Team1Result" />
<input name="SetResults[0].Team2Result" id="SetResults_0__Team2Result" />
<input name="SetResults[1].Team1Result" id="SetResults_1__Team1Result" />
<input name="SetResults[1].Team2Result" id="SetResults_1__Team2Result" />
...

В Asp.Net Core вы также можетеиспользуйте TagHelpers вместо HtmlHelpers, так что вы можете написать цикл for, как показано ниже, с помощью ввода TagHelper.Для получения дополнительной информации о TagHelpers, пожалуйста, смотрите эту ссылку

for (var i = 0; i < Model.SetResults.Count(); i++)
{
    <input asp-for="@Model.SetResults[i].Team1Result" />
    <input asp-for="@Model.SetResults[i].Team2Result" />
    ...  
}

Если вы также можете опубликовать представление бритвы, было бы полезно увидеть, что происходит

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