繁体   English   中英

ASP.NET MVC - 如何将列表从控制器传递到视图以填充下拉列表?

[英]ASP.NET MVC - How to pass a list from controller to view to populate dropdown?

我的“类别”模型有一个“创建”视图,它应该允许用户选择将存储“类别”的仓库(另一个模型)(使用下拉菜单)。 由于我无法将 2 个视图模型传递给单个视图,我如何访问 Category.Create 视图中的仓库名称?

@model InventoryManSys.Models.Category

@{
    ViewData["Title"] = "Create";
}

<h1>Create</h1>

<h4>Category</h4>
<hr />
<div class="row">
    <div class="col-md-4">
        <form asp-action="Create">
            <div asp-validation-summary="ModelOnly" class="text-danger"></div>
            <div class="form-group">
                <label asp-for="Name" class="control-label"></label>
                <input asp-for="Name" class="form-control" />
                <span asp-validation-for="Name" class="text-danger"></span>
            </div>
            <div class="form-group">
                <label asp-for="Warehouse" class="control-label"></label>
                <select asp-for="Warehouse" class ="form-control" asp-items="ViewBag.Warehouses"></select> 
            </div>
            <div class="form-group">
                <input type="submit" value="Create" class="btn btn-primary" />
            </div>
        </form>
    </div>
</div>

我听说 ViewBag 是不好的做法,对吗?

您可以在视图模型上使用子属性,或者只使用视图数据。 不确定viewbag。 但可能它可能会有所帮助。

https://docs.microsoft.com/en-us/aspnet/core/mvc/views/overview?view=aspnetcore-6.0#pass-data-to-views

ViewData和ViewBag的区别总结

https://docs.microsoft.com/en-us/aspnet/core/mvc/views/overview?view=aspnetcore-6.0#summary-of-the-differences-between-viewdata-and-viewbag

如果您可以在类别视图模型中包含新属性,请考虑包含仓库名称列表。

您可以在视图中使用以下代码在下拉列表中显示仓库名称:

@Html.DropDownListFor(model => model.SelectedWarehouse, new SelectList(Model.WarehouseNames))

上面的代码还将您的选择分配给类别视图模型中名为SelectedWarehouse的属性。

我在我的项目中使用选择列表 我认为以下两个链接可以帮助您。 祝你好运

https://www.c-sharpcorner.com/article/net-core-5-dropdownlist/

https://www.compilemode.com/2021/06/dropdown-list-in-asp-net-core-mvc.html

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM