在 ASP.NET MVC 5 的布局中创建 HTML 下拉列表

Posted

技术标签:

【中文标题】在 ASP.NET MVC 5 的布局中创建 HTML 下拉列表【英文标题】:Create an HTML Dropdown in Layout in ASP.NET MVC 5 【发布时间】:2021-12-14 23:20:53 【问题描述】:

我有一个仪表板,sidenav 在 layout.cshtml 中。我有一个模式,其中包含一个在主页/索引中工作的下拉列表。但是,在不同的页面上,模式不会触发。然后我发现,模态框需要在布局中,以便可以从任何页面触发,因为 sidenav 中的链接。

但是,当我将模态框移到 layout.cshtml 时,出现错误

Line 186: @Html.DropDownList("DomainDropDownList", ViewBag.domainSelectionList as SelectList, new  @class = "select" )

[InvalidOperationException: There is no ViewData item of type 'IEnumerable<SelectListItem>' that has the key 'DomainDropDownList'.]

然后我意识到这是因为没有 ViewData,因为它在 layout.cshtml 中。

我查了一下,发现我可以使用 ViewComponents,但那是在 Core 中,我没有使用 Core。

是否有人对我如何在 layout.cshtml 中使用以下方法获取下拉列表有任何建议:

SelectList DomainDropDownList = new SelectList(DomainManagement.ListIsDomainAlive(), "id", "domainName");
ViewBag.domainSelectionList = DomainDropDownList;

谢谢

【问题讨论】:

【参考方案1】:

你应该改变

@Html.DropDownList("DomainDropDownList", ViewBag.domainSelectionList as SelectList, new @class = "select" )

@Html.DropDownList("domainSelectionList", ViewBag.domainSelectionList as SelectList, new @class = "select" )

因为ViewBag 名称是domainSelectionList 而不是DomainDropDownList

【讨论】:

以上是关于在 ASP.NET MVC 5 的布局中创建 HTML 下拉列表的主要内容,如果未能解决你的问题,请参考以下文章

如何在 ASP.NET MVC 中创建 CheckBoxListFor 扩展方法?

如何在 asp.net mvc 中创建审计日志/审计跟踪

我们如何使用 EF 在 ASP.Net MVC 应用程序中创建 3 层架构?

如何在 C# Asp.net MVC 中创建 websocket 客户端?

如何在 Visual Studio 2017 的 ASP.NET MVC 中创建自定义生成/脚手架模板(Razor)?

是否可以在使用 Jira 凭据的 asp.net mvc 应用程序中创建登录页面?