У меня есть частичное представление для панели фильтрации, такой как;
@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);
}
Что может быть причиной этой проблемы? Заранее спасибо.