Asp. Net Core MVC - Возврат отредактированной модели без изменения выбора, созданного с помощью SelectTagHelper - PullRequest
0 голосов
/ 14 июля 2020

Я создаю раскрывающийся список, используя этот код

<div class="btn-group-vertical">
    <select asp-for="Client.ClientCode"
            asp-items="@(new SelectList(Model.Clients,"ClientCode","Client"))"
            class="form-control" style="width:auto" id="client">
    </select>
</div>

Затем я редактирую значение модели. Но когда я возвращаю эту модель, ничего не происходит. Значение раскрывающегося списка не изменилось. Я пытаюсь использовать ModelState.Clear ()

 ModelState.Clear();
 return View(model);

Это не работает. Я пытаюсь перезагрузить страницу, используя

window.location.reload(true);

Это тоже не работает. Я пытаюсь открыть страницу, используя

window.open(url, "_self");

Это тоже не работает. Есть ли какое-либо решение для обновления sh значения раскрывающегося списка?

Обновление: это код в поле зрения

[HttpGet]
    public async Task<IActionResult> Setup(string id)
    {
        var model = HttpContext.Session.GetComplexData<SetupViewModel>("SetupModel");
        if (model == null || !string.IsNullOrEmpty(id))
        {
            if (model == null || model.Client.ClientCode != id)
            {
                string clientCode = string.IsNullOrEmpty(id) ? "POI" : id;
                var client = await projectRepository.GetClient(clientCode);
                var ClientList = await projectRepository.GetAllClients();
                var ProjectList = await projectRepository.GetAllProjects(client.ClientCode);

                model = new SetupViewModel()
                {
                    Clients = ClientList.ToList(),
                    Client = client,
                    Projects = ProjectList.ToList(),
                };
                HttpContext.Session.SetComplexData("SetupModel", model);
            }
        }

        ModelState.Clear();
        return View(model);
    }

Это модель

public class SetupViewModel
{
    public Projects Client { get; set; }
    public List<Projects> Clients { get; set; }

    public Projects Project { get; set; }
    public List<Projects> Projects { get; set; }
    public bool ProjectActive { get; set; }

    public string ErrorMessage { get; set; }
}

вот почтовый индекс в контроллере

try
        {
            Employee employee = await employeeRepository.GetEmployeeByPhoneNumber(((ClaimsIdentity)User.Identity).FindFirst(AccountConstant.PhoneNumber).Value);
            var model = HttpContext.Session.GetComplexData<SetupViewModel>("SetupModel");
            foreach (var project in model.Projects)
            {
                project.ClientCode = newModel.Client.ClientCode;
                project.Client = newModel.Client.Client;
                await projectRepository.Update(project, employee);
            }
            model.Client.Client = newModel.Client.Client;
            model.Client.ClientCode = newModel.Client.ClientCode;

            TempData["Messages"] = "Edit client information has been successful.";
            HttpContext.Session.SetComplexData("SetupModel", model);
            return RedirectToAction("Setup", "Home");
        }
        catch (Exception exc)
        {
            HttpContext.Session.SetComplexData("Error", new ErrorViewModel() { ErrorMessage = exc.ToString() });
            return RedirectToAction("Error", "Home");
        }

Надеюсь, это обновление будет полезным.

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