亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何在 ASP.NET MVC 應用程序中使用多選?

如何在 ASP.NET MVC 應用程序中使用多選?

C#
海綿寶寶撒 2021-10-09 10:47:52
兩天前,我正在嘗試弄清楚并學習如何在 ASP.NET Core 中構建多選下拉列表,該列表是從 db 上下文中生成的,并且結果在構造函數中進一步使用,所以我決定提出這個問題。我在任何地方都找不到如何使用已發布表單中的數據,所以也許您可以幫助我。我相信我在控制器中的 POST 操作中犯了一些錯誤。我不確定我應該如何將發布的數據輸入控制器。我在簡單的例子上嘗試了各種組合。我現在最好的是:視圖模型.cs:public class ProductViewModel    {        public List<SelectListItem> Products { get; set; }        public int[] ProductIDs { get; set; }    }索引.cshtml:<!DOCTYPE html><html><head>    <title>Aplikacja</title>    <meta charset="utf-8">    <link rel="stylesheet" href="~/dist/allstyles.css" /></head><body>    <form asp-action="Index" method="post">        <input type="hidden" asp-for="Products" />        <div class="form-group">            <label asp-for="Products">Produkty</label>            <select asp-for="ProductIDs" class="form-control" asp-items="ViewBag.Lista"></select>        </div>        <div class="text-center">            <button class="btn btn-primary" type="submit">Save</button>            <a asp-action="Index" class="btn btn-secondary">Cancel</a>        </div>    </form>//ViewBag tests from controller    @ViewBag.Message  //test1, returns 0    @ViewBag.Message2 //test2, returns 0</body></html>控制器.cspublic class ProductController : Controller{    private readonly ApplicationDbContext _context; //database context    public ProductController(ApplicationDbContext context)    {        _context = context; //context for controller    }    //GET    public ActionResult Index()    {        ProductViewModel productVM = new ProductViewModel(); //viewmodel instance        PopulateProducts(); //populating dropdown        return View(productVM); //returning viewmodel    }
查看完整描述

2 回答

?
郎朗坤

TA貢獻1921條經驗 獲得超9個贊

對于selectedItems,我認為您需要從而ViewBag.Lista不是檢索productVM.Products。當Form從Viewto發布時Controller,ProductViewModel.Products將始終為 null。


我建議您嘗試使用以下解決方法ViewBag.Lista。


    public ActionResult ProductSelect(ProductViewModel productVM)

    {

        PopulateProducts();


        if (productVM.ProductIDs != null)

        {

            List<SelectListItem> selectedItems = ((IEnumerable<SelectListItem>)ViewBag.Lista)

                .Where(p => productVM.ProductIDs.Contains(int.Parse(p.Value))).ToList();


            ViewBag.Message = selectedItems.Count.ToString(); //returns 0

            ViewBag.Message2 = ((IEnumerable<SelectListItem>)ViewBag.Lista).Count().ToString();//returns 0

        }

        return View(productVM);

    }


查看完整回答
反對 回復 2021-10-09
  • 2 回答
  • 0 關注
  • 246 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號