Html.BeginForm публикует другую модель - PullRequest
0 голосов
/ 10 октября 2019

У меня есть частичное представление для панели фильтрации, такой как;

@model TabNetMVC.Models.FixedAsset.BarcodeTrackingModel
@using (Html.BeginForm("ApprovalList", "BarcodeTracking", FormMethod.Post))
{

    @Html.DropDownListFor(model => model.RestaurantNo, Model.Restaurants, new { @class = "form-control", id = "restDropDown" })
    <input onclick="" type="submit" name="name" value="Apply Filter" />
}

Здесь я получаю модель с типом BarcodeTrackingModel и затем заполняю имена ресторанов в моем раскрывающемся списке с помощью Model.Restaurants. Model.Restaurants - это список объектов типа SelectListItem. Я хочу, чтобы пользователь выбрал ресторан, и тогда значение этого выбора будет перезаписано в свойстве RestaurantNo существующей модели. Для этой цели я передал выражение в качестве первого параметра моему методу DropDownListFor, как этот;model => model.RestaurantNo. Моя проблема заключается в том, что всякий раз, когда я нажимаю кнопку «Применить фильтр» и отправляю форму, модель передается методу Action ApprovalList со всеми его свойствами, кроме свойства RestaurantNo. Таким образом, только выбранное значение в раскрывающемся списке передается методу действия, а другие данные в существующей модели теряются. Другими словами, форма публикует другую модель, а не существующую Model, которую она потребляет. Вот метод действия;

[HttpPost]
        public ActionResult ApprovalList(BarcodeTrackingModel model)
        {
            model.ProductList = model.ProductPagedList.Where(p => p.RestaurantNo == model.RestaurantNo).ToList();

            return View("~/Views/BarcodeTracking/List.cshtml", model);
        }

Что может быть причиной этой проблемы? Заранее спасибо.

1 Ответ

0 голосов
/ 10 октября 2019

Вы отправляете только ту информацию, которая указана в вашей форме, в данном случае единственными данными, которые вы отправляете, является

модель. Ресторан Нет

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

...