Как я могу отобразить выбранный элемент списка в действии обновления? - PullRequest
0 голосов
/ 24 сентября 2019

В Viewbag есть продукты, которые я отображаю в выпадающем списке.Он просто создает MyModel с выбранным продуктом.Но когда я пытаюсь обновить MyModel и установить SelectedProduct таким образом, выпадающий список не показывает выбранный.

Как отобразить выбранный элемент списка в действии обновления?

public class MyViewModel {
    public int Id { get; set; }
    public int ProductId { get; set; }
    public Product Product { get; set; }
    public string SelectedProduct { get; set; }
}

public ActionResult CreateOrUpdate(int? id)
{
     var model = MyViewModel();

     if (id.HasValue && id.Value != default)
     {
          model = GetFromDatabase(id.Value);
     }
     else 
     {
          // This doesn't work
          model.SelectedProduct = model.Product;
     }

     ViewBag.Products = GetAllProductsFromDatabase()
                       .Select(x => new SelectListItem()
                       {
                            Text = x.FullName,
                            Value = x.Id.ToString()
                       }).ToList();;

     return View(model);
}

<div>
     <label asp-for="SelectedProduct"></label>
     <select asp-for="SelectedProduct" asp-items="@ViewBag.Products</select>
</div>

1 Ответ

0 голосов
/ 24 сентября 2019
public ActionResult CreateOrUpdate(int? id)
{
     var model = MyViewModel();

     if (id.HasValue && id.Value != default)
     {
          model = GetFromDatabase(id.Value);
     }

     ViewBag.Products = GetAllProductsFromDatabase()
                       .Select(x => new SelectListItem()
                       {
                            Text = x.FullName,
                            Value = x.Id.ToString(),
                            Selected=x.ProductId==model?.ProductId
                       }).ToList();

     return View(model);
}

<div>
     <label asp-for="ProductId"></label>
     <select asp-for="ProductId" asp-items="@ViewBag.Products</select>
</div>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...