Запрос Post возвращает не тот объект, который был передан

#asp.net-mvc #asp.net-core

#asp.net-mvc #asp.net-core

Вопрос:

Я пытаюсь создать простое CRUD-приложение asp.net ядро использует MVC, и со мной происходит самая странная вещь.

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

     [HttpGet]
    public IActionResult CreateCompany(Guid id)
    {
        //id = 677b57f1-d0b2-484b-9892-b06e6eb9f1f7
        var pageId = id;
        var company = new CompanyListItem() {PublicPageId = pageId};
        return View(company);
    }

    [HttpPost]
    public IActionResult CreateCompany(CompanyListItem model)
    {
         //model.PublicPageId = 00000000-0000-0000-0000-000000000000
        if (ModelState.IsValid)
        {
            model.Id = Guid.NewGuid();
            var newModel = _companyDataProvider.Add(model);
            PublicPageViewModel page = null;
            if (newModel != null)
            {
                page = _pageDataProvider.GetPageIdFromCompanyListId(newModel.Id);
            }
            if (page != null)
            {
                return RedirectToAction("Details", page);
            }
        }
        return View();
    }
  

моя форма:

 @model CompanyListItem

<h1>Add Company</h1>
<form method="post">
    <div class="col-md-6">
        <div class="form-group">
            <label asp-for="Header"></label>
            <input asp-for="Header" class="form-control"/>
        </div>

        <div>
            <input type="submit" class="btn btn-success" value="save"/>
            <a class="btn btn-default">Cancel</a>
        </div>
    </div>
</form>
  

Кто-нибудь знает, почему это происходит? Или как я могу предотвратить это?

Комментарии:

1. Вы не создаете никакого элемента управления формой для свойства PublicPageId , поэтому его значение не может быть отправлено обратно. Включите скрытый ввод для него в форму.

2. не могли бы вы, пожалуйста, прислать пример? Я попробовал @Html. HiddenFor(m=>m.PublicPageId) и он все еще это делает

3. спасибо, что сделали это, я переключился с @html на ввод, спасибо agan