Asp. net не может отправить значение из выбора в http-сообщение в контроллере - PullRequest
1 голос
/ 27 мая 2020

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

<div class="form-group">
    @Html.LabelFor(model => model.idCategories, htmlAttributes: new { @class = "control-label col-md-2" })
    <div class="col-md-10">
        <select class="form-control" id="Categorie" name="Categorie">
            <option>--Choisir la categorie--</option>
            @foreach (var item in ViewBag.Categories)
            {
                <option value="@item.idCategories">@item.Description</option>
            }
        </select>
        @Html.ValidationMessageFor(model => model.idCategories, "", new { @class = "text-danger" })
    </div>
</div>

В этой ситуации все значения каждого параметра являются нормальными значениями, на данный момент от 1 до 5. Но когда я нажимаю кнопку отправки, чтобы отправить HTTP-запрос, отправленное значение всегда равно 0, и я не могу понять, почему. Я отправляю информацию этому контроллеру: [HttpPost] public ActionResult AjouterSpectacle(SpectacleView spectacle) { Client currentUser = OnlineUsers.GetSessionUser().ToUser(); spectacle.IdDistributeur = currentUser.idClient; ViewBag.Categories = DB.Categories; ViewBag.testCat = new SelectList(DB.Categories, "idCategories", "Description"); if (ModelState.IsValid) DB.AddSpectacle(spectacle); else return View(spectacle); return RedirectToAction("Spectacles"); }

переменная Spectre имеет idCategor ie, который должен быть отправлен id из выбора, но значение всегда равно 0. Я пытаюсь сделать это отправьте правильное значение из выбора Categories

Я предполагаю, что я делаю очевидную ошибку, но я просто не могу понять asp это.

Отредактировано: Это моя часть моего SpecacleView:

    public int idSpectacle { get; set; }

    public String ImageId { get; set; }

    [Required(ErrorMessage = "Requis")]
    [Display(Name = "Nom du Spectacle")]
    public string nomSpectacle { get; set; }

    [Required(ErrorMessage = "Requis")]
    [Display(Name = "Description")]
    public string description { get; set; }

    [Required(ErrorMessage = "Requis")]
    [Display(Name = "Categories")]
    public int idCategories { get; set; }

    [Required(ErrorMessage = "Requis")]
    [Display(Name = "Prix de base")]
    public decimal prix_de_base { get; set; }

    [Required(ErrorMessage = "Requis")]
    [Display(Name = "Nom de l'artiste")]
    public string nomArtiste { get; set; }

    [JsonIgnore]
    [Required(ErrorMessage = "Requis")]
    [Display(Name = "Image")]
    public string PictureImageData { get; set; }

    [JsonIgnore]
    private ImageGUIDReference PictureReference { get; set; }
    public int IdDistributeur { get; set; }

1 Ответ

1 голос
/ 27 мая 2020

Когда вы публикуете форму, данные отправляются в виде пар "ключ-значение", где ключ - это атрибут имени элемента, а значение - это значение, которое пользователь предоставил или выбрал. Затем, когда контроллер получает данные публикации, он сопоставляет ключ полученных данных со свойством с тем же именем в модели представления.

Итак, в вашем случае имя выбранного вами выбора это Categorie, а в модели представления вы ожидаете, что ключ для него будет idCategorie. Вам следует либо изменить атрибут Name в <select> на idCategorie, либо изменить имя свойства в модели просмотра на Categorie.

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