DropDownList 标签助手在使用 ViewBag 时不返回所选项目的 Id

问题描述 投票:0回答:1

Controller ViewBag如下:

ViewBag.Products = new SelectList(await _productService.GetAllProduct(), "ProductId", "ProductName");

Razor 页面 DropDownList 标签助手如下:

@Html.DropDownList("ProductId", (IEnumerable<SelectListItem>)ViewBag.Products, "Select Product", new { @class ="form-control" })

当我选择下拉列表的值并提交产品时无法返回给控制器,它返回空值

期待 productId 返回给控制器。

asp.net-mvc asp.net-core asp.net-mvc-3
1个回答
0
投票

根据你的描述,我猜控制器的参数有问题。模型绑定将检查客户端发布值并自动映射产品 ID。

下拉列表代码看起来不错。

我也写过这样的测试demo:

<form asp-action="ProductUpdate">
    @Html.DropDownList("ProductId", (IEnumerable<SelectListItem>)ViewBag.Products, "Select Product", new { @class ="form-control" })
    <div class="form-group">
        <input type="submit" value="Create" class="btn btn-primary" />
    </div>
    </form>

比如你的产品ID是int值,那么你应该这样设置action:

    [HttpPost]
    public async Task<IActionResult> ProductUpdate(int ProductId)
    {
        if (ModelState.IsValid)
        {

        }
        return View( );
    }

结果:

© www.soinside.com 2019 - 2024. All rights reserved.