加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > asp.Net > 正文

asp.net-mvc – 将HTML.EditorFor转换为下拉列表(html.dropdownf

发布时间:2020-12-15 20:09:04 所属栏目:asp.Net 来源:网络整理
导读:目前我正在使用一个 Html.EditorFor控件在默认的“创建”视图页面这样. %: Html.EditorFor(model = model.IsActive) % 我想使用值将其转换为下拉列表,并且仍然绑定到视图中的模型.我的问题是两倍. 如果在下拉菜单中只需要2/3的值.它有一个快速的方式显式地填
目前我正在使用一个 Html.EditorFor控件在默认的“创建”视图页面这样.
<%: Html.EditorFor(model => model.IsActive) %>

我想使用值将其转换为下拉列表,并且仍然绑定到视图中的模型.我的问题是两倍.

>如果在下拉菜单中只需要2/3的值.它有一个快速的方式显式地填充2或3个值?
>如果列表很大,需要来自一个sql查询,该怎么做?

先谢谢您的帮助.

解决方法

为了生成一个下拉列表,您需要在视图模型上使用2个属性:将所选值绑定的标量属性和将包含要显示在下拉列表中的项的集合属性.

所以你可以定义一个视图模型:

public class DropDownListViewModel
{
    public string SelectedValue { get; set; }
    public IEnumerable<SelectListItem> Items { get; set; }
}

然后在您的主视图模型上具有此类型的属性:

public DropDownListViewModel Foo { get; set; }

现在你可以有一个这种类型的自定义编辑器模板(?/ Views / Shared / EditorTemplates / DropDownListViewModel.ascx):

<%@ Control 
    Language="C#" Inherits="System.Web.Mvc.ViewUserControl<DropDownListViewModel>" 
%>
<%= Html.DropDownListFor(x => x.SelectedValue,Model.Items) %>

然后在你的主视图中:

<%= Html.EditorFor(x => x.Foo) %>

现在剩下的就是让你的控制器动作渲染主视图来填充Foo属性和相应的值.可以硬编码,来自存储库或任何.没关系.

另一方面,如果您事先知道这些值,您可以在编辑器模板(?/ Views / Shared / EditorTemplates / YesNoDropDown.ascx)中进行硬编码:

<%= Html.DropDownList(
    "",new SelectList(
        new[] 
        { 
            new { Value = "true",Text = "Yes" },new { Value = "false",Text = "No" },},"Value","Text",Model
    )
) %>

接着:

<%= Html.EditorFor(x => x.IsActive,"YesNoDropDown") %>

或者通过在您的视图模型上装饰IsActive属性:

[UIHint("YesNoDropDown")]
public bool IsActive { get; set; }

接着:

<%= Html.EditorFor(x => x.IsActive) %>

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读