Как сохранить измененные данные из веб-страницы? - PullRequest
0 голосов
/ 02 мая 2018

Я пытаюсь сохранить некоторые данные со страницы конфигурации для пользователей - но я только что получил "ноль" назад. - У кого-нибудь есть идеи - как я могу решить свою проблему ??

Вот моя страница:

@using (Html.BeginForm())
    {

        <main>
            <fieldset>
            <div id="edit_trsconfiguration">
                <div id="edit_headbar">
                    <h1>Arbeitszeit - Konfiguration von:</h1>
                    <div id="edit_name">
                        <p>@(Model.Name)</p>
                    </div>
                    <div id="edit_headbar_positioning">
                        <div id="edit_replacement">
                            <p>Standardvertretung</p>
                            @(Html.Kendo().DropDownList()
                                                .Name("Replacement")
                                                .DataTextField("Name")
                                                .DataValueField("SysId")
                                                .DataSource(builder => builder.Read(operationBuilder => operationBuilder.Type(HttpVerbs.Post).Action("Read", "EmployeeDropdown")))
                            )

                        </div>
                    </div>
                </div>
                <div id="edit_general">
                    <div id="edit_region">
                        <p>Region</p>
                        @(Html.Kendo().DropDownList()
                                            .Name("Region")
                                            .DataTextField("Name")
                                            .DataValueField("SysId")
                                            .DataSource(builder => builder.Read(operationBuilder => operationBuilder.Type(HttpVerbs.Post).Action("Read", "RegionDropdown")))
                        )
                    </div>
                    <div id="edit_language">
                        <p>Sprache</p>
                        @(Html.Kendo().DropDownListFor(model => model.Sprache)
                                            .Name("Sprache")
                                            .BindTo(
                                            new List<SelectListItem>() {
                                                                        new SelectListItem() {
                                                                            Text = "Deutsch",
                                                                            Value = "0"
                                                                        },
                                                                        new SelectListItem() {
                                                                            Text = "Englisch",
                                                                            Value = "1"
                                                                        }
                                            }
                                            )
                        )
                    </div>
                    <div id="edit_starttime">
                        <p>Startzeit</p>
                        @Html.Kendo().TimePickerFor(model => model.TRSConfiguration.DefaultBeginTime)
                    </div>
                    <div id="edit_pausetime">
                        <p>Pausenzeit</p>
                        @Html.Kendo().TimePickerFor(model => model.TRSConfiguration.DefaultBreakTime)
                    </div>
                </div>
                <div id="edit_worktimes">
                    @(Html.Kendo().DropDownListFor(model => model.TRSConfiguration.TRSConfigTemplate)
                                        .Name("Zeiterfassungsvorlage")
                                        .BindTo(
                                        new List<SelectListItem>() {
                                                    new SelectListItem() {
                                                        Text = "Benutzerdefiniert",
                                                        Value = "1"
                                                    },
                                                    new SelectListItem() {
                                                        Text = "Vollzeit",
                                                        Value = "0"
                                                    }
                                        }
                                        )
                                        .Events(e => e.Change("onSelectTRSConfigValue"))
                    )

                    <h2>Arbeitszeiten:</h2>

                    @{
                        DateTimeDecimalConverter converter = new DateTimeDecimalConverter();
                        var mondayHours = converter.ConvertDateTimeToDecimal(Model.TRSConfiguration.WorkTimeMondayHours);
                        var tuesdayHours = converter.ConvertDateTimeToDecimal(Model.TRSConfiguration.WorkTimeTuesdayHours);
                        var wednesdayHours = converter.ConvertDateTimeToDecimal(Model.TRSConfiguration.WorkTimeWednesdayHours);
                        var thursdayHours = converter.ConvertDateTimeToDecimal(Model.TRSConfiguration.WorkTimeThursdayHours);
                        var fridayHours = converter.ConvertDateTimeToDecimal(Model.TRSConfiguration.WorkTimeFridayHours);
                        


                            <div id="worktimesFull" style="display:none;">
                                <p class="edit_workday_description">Montag:</p>
                                <div class="edit_workday_time">@mondayHours h</div>
                                <p class="edit_workday_description">Dienstag</p>
                                <div class="edit_workday_time">@tuesdayHours h</div>
                                <p class="edit_workday_description">Mittwoch</p>
                                <div class="edit_workday_time"> @wednesdayHours h</div>
                                <p class="edit_workday_description">Donnerstag</p>
                                <div class="edit_workday_time">@thursdayHours h</div>
                                <p class="edit_workday_description">Freitag</p>
                                <div class="edit_workday_time">@fridayHours h</div>
                            </div>

                            <div id="worktimesCustom">
                                <p class="edit_workday_description">Montag:</p>
                                <div class="edit_workday_time">
                                    @Html.Kendo().TimePickerFor(model => model.TRSConfiguration.WorkTimeMondayHours)
                                </div>
                                <p class="edit_workday_description">Dienstag</p>
                                <div class="edit_workday_time">
                                    @Html.Kendo().TimePickerFor(model => model.TRSConfiguration.WorkTimeTuesdayHours)
                                </div>
                                <p class="edit_workday_description">Mittwoch</p>
                                <div class="edit_workday_time">
                                    @Html.Kendo().TimePickerFor(model => model.TRSConfiguration.WorkTimeWednesdayHours)
                                </div>
                                <p class="edit_workday_description">Donnerstag</p>
                                <div class="edit_workday_time">
                                    @Html.Kendo().TimePickerFor(model => model.TRSConfiguration.WorkTimeThursdayHours)
                                </div>
                                <p class="edit_workday_description">Freitag</p>
                                <div class="edit_workday_time">
                                    @Html.Kendo().TimePickerFor(model => model.TRSConfiguration.WorkTimeFridayHours)
                                </div>
                            </div>
                </div>
                @(Html.Kendo().Button()
                                            .Name("zurueckButton")
                                            .HtmlAttributes(new { type = "button", @class = "button" })
                                            .Content("Zurück")
                                            .Events(ev => ev.Click("zurueckButton")))

                @(Html.Kendo().Button()
                                            .Name("neuConfigButton")
                                            .HtmlAttributes(new { type = "button", @class = "button" })
                                            .Content("Neue Zeitkonfiguration")
                                            .Events(ev => ev.Click("neuConfigButton")))

                <input type="submit" value="Update" />
            </div>
            </fieldset>
        </main>
    }
</body>
</html>

И его контроллер выглядит так:

[HttpGet]
        public ActionResult EditTRSConfiguration([DataSourceRequest] DataSourceRequest request, Guid? sysId)
        {
            Guid empSysId = sysId == null ? Guid.Empty : (Guid)sysId;
            if (empSysId == Guid.Empty)
                RedirectToAction("Index", "Administration");

            EmployeeAdministrationViewModel employeeViewModel;
            EmployeeDevice employeeDevice;
            TRSConfigurationDevice tRSConfigurationDevice;
            TRSConfigurationViewModel tRSConfigurationViewModel;
           
            using (EmployeeManagementConnector empConnector = new EmployeeManagementConnector())
            using (TimeRegistrationSystemConnector trsConnector = new TimeRegistrationSystemConnector())
            {
                employeeDevice = empConnector.LoadEmployees(empSysId, ModelLanguages.deDE).Find(x => x.EmployeeSysId == sysId);
                tRSConfigurationDevice = trsConnector.LoadTRSConfigurationDevices().Find(x => x.EmployeeSysId == sysId);
                TRSAccountDevice trsDevice = trsConnector.LoadAccountDevice(empSysId);
                AdministrationMapper mapper = new AdministrationMapper();

                //Getting the needed devices and Mapper

                tRSConfigurationViewModel = mapper.Map(tRSConfigurationDevice);

                List<EmployeeDropdownDevice> replacements = empConnector.LoadOtherEmployees(empSysId, ModelLanguages.deDE);
                EmployeeDropdownViewModel replacement = mapper.Map(replacements[0]);

                employeeViewModel = mapper.Map(tRSConfigurationViewModel, trsDevice, employeeDevice, replacement);

            }
            return PartialView(employeeViewModel);
        }

        [HttpPost]
        public ActionResult EditTRSConfiguration(EmployeeAdministrationViewModel empViewodel, Guid? sysId)
        {
                           
            return PartialView(employeeViewModel);
        }

Но проблема в том, что я не стал возвращать данные об изменениях. Все данные, которые я могу изменить на странице, просто выводятся на ноль.

У кого-нибудь есть идеи, как я могу получить данные?

здесь ввод на страницу enter image description here

и вот что выходит :( enter image description here

было бы здорово, если бы кто-то мог помочь мне с моей проблемой.

С наилучшими пожеланиями

1 Ответ

0 голосов
/ 03 мая 2018

Вы можете смоделировать данные, которые вы получите в контроллере, используя BIND:

public ActionResult EditTRSConfiguration([Bind(Include = "TRSConfiguration,Sprache")] Models.EmployeeAdministrationViewModel Employee){
}

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

...