EditFor не меняет значение для модели - PullRequest
0 голосов
/ 28 апреля 2020

У меня есть основной вид и некоторые частичные виды. У моей модели есть список объектов, и я перебираю список, и каждый элемент отправляется в частичное представление. Я использую BeginForm на своем главном экране, и после отправки в главной форме мне удалось получить список объектов, но в их начальном состоянии. У меня есть текстовое поле, которое должно изменить одно из моих свойств элемента из списка, но, похоже, оно не работает.

Вот некоторый код Мой главный вид

@using (Html.BeginForm("CreateRecruitmentActivities", "RecruitmentActivities", FormMethod.Post))
 {
@model MonthlyRecruitmentActivity

@Html.HiddenFor(x => x.HoursLeft, new { id = "hoursLeftHidden" })
@Html.HiddenFor(x => x.Title)

for (int i = 0; i < Model.Activities.Count(); i++)
{
    @Html.HiddenFor(model => Model.Activities[i].File)
    @Html.HiddenFor(model => Model.Activities[i].HoursDone)
    @Html.HiddenFor(model => Model.Activities[i].Id)
}

<div>

                @foreach (var activity in Model.Activities)
                {                      
                    @Html.Partial("_recruitmentActivityComponent", activity)
                }

 <div><button type="submit" style="margin: 15px" id="saveDocBtn" value="Zatw_1" class="editButton" />Save</div>
</div>
}

Мой частичный:

@model  RecruitmentActivityComponent
div class="col-md-2" style="font-size: smaller">
                    <div>@Html.LabelFor(model => Model.HoursDone, htmlAttributes: new { @class = "control-label " })</div>
                    <div>
                        @Html.EditorFor(model => Model.HoursDone, new { htmlAttributes = new { @class = "form-control countable" } })
                        @Html.ValidationMessageFor(model => Model.HoursDone, "", new { @class = "text-danger" })
                    </div>
                </div>

Модели:

public class MonthlyRecruitmentActivity
    {
        public int ID { get; set; }
        public string Title { get; set; }
        public int HoursLeft { get; set; }
        public RecruitmentActivityComponent[] Activities { get; set; }
    }

public class RecruitmentActivityComponent
{
    public int Id { get; set; }
    public string Title { get; set; }
    public string Description { get; set; }

    [Required(ErrorMessage = "errr msg")]
    [Range(0, int.MaxValue, ErrorMessage = "error msg")]
    [Display(Name = "Text")]
    public int HoursDone { get; set; }
    public IFormFile File { get; set; }
}

Скажем сначала У меня был элемент типа RecruitmentActivityComponent с HoursDone, установленным в 0, я изменил его на 5 и отправил на мой контроллер. Мой контроллер все еще видит 0.

...