gpt4 book ai didi

c# - 如何在 ascx View 用户控件 MVC 上填充下拉列表?

转载 作者:搜寻专家 更新时间:2023-10-31 23:14:30 25 4
gpt4 key购买 nike

我有一个硬编码在 MVC View 用户控件页面中的下拉列表,我想从数据库表中填充它。 MVC View 页面继承了来 self 的 Controller 的数据。此下拉列表将包含类似于状态列表的内容,供用户选择为我的主要对象设置项目。此列表不适合传递到 View 中的数据。

您将在何处以及如何将下拉列表的数据放入 MVC View 用户控件中? Webform 用户控件有一个代码隐藏页面,可以帮助从数据库加载此信息并传递到 HTML 呈现端。这将如何使用 MVC 使用正确的关注点分离方法来完成?

Controller

public ActionResult Inboxes() 
{
var vm = new ListInboxesViewModel();
vm.Inboxes = MyDataService.GetInboxes().OrderBy(i => i.InboxName);
return View(vm);
}

主视图

<% Html.RenderPartial("InboxesGrid", Model.Inboxes); %>

局部 View

<%@ Control Language="C#" Inherits="System.Web.Mvc.ViewUserControl<IEnumerable<MoniteredInbox>>" %> 
<div>
<table>
<tr><td>
<select id="SelectedStateddl">
<!-- Selected states from database Table -->
</select>
</td></tr>
</table>
</div>

最佳答案

Zhaph - Ben Duguid's suggestion是一个很好的。您还可以创建一个局部 View ,您的主视图将呈现该 View 并将模型的必要部分传递给该 View 。

例如...我有一个绑定(bind)到我的 InboxesViewModel 的“收件箱”的强类型 View 。然后我呈现部分 View InboxesGrid 并传入收件箱列表。我的局部 View 也是强类型化的,允许我在局部 View 上以任何我喜欢的方式使用数据。

Controller

    public ActionResult Inboxes()
{
var vm = new ListInboxesViewModel();
vm.Inboxes = MyDataService.GetInboxes().OrderBy(i => i.InboxName);
return View(vm);
}

主视图

    <% Html.RenderPartial("InboxesGrid", Model.Inboxes); %>

局部 View

    <%@ Control Language="C#" Inherits="System.Web.Mvc.ViewUserControl<IEnumerable<MoniteredInbox>>" %>
<div>
<%= Html.DropDownListFor(model=>model.Inbox.InboxId,
Model.Inboxes.ToSelectList(
x => x.InboxId.ToString(),
x => x.InboxName,
Model.Inbox.InboxId.ToString(),
"[ Select One ]")) %>
</div>

扩展方法

public static SelectList ToSelectList<T>(this IEnumerable<T> list,
Func<T, string> value,
Func<T, string> text,
string firstValue,
string firstText)
{
var firstSelectListItem = new { Value = firstValue, Text = firstText };

var collection = (new[] { firstSelectListItem })
.Concat(list.Select(x => new { Value = value(x), Text = text(x) }));

return new SelectList(collection, "Value", "Text");
}

关于c# - 如何在 ascx View 用户控件 MVC 上填充下拉列表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2524454/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com