C# 如何在mvc中使用模型类添加动态控件,而无需循环或jquery

C# 如何在mvc中使用模型类添加动态控件,而无需循环或jquery,c#,asp.net,asp.net-mvc,asp.net-mvc-4,asp.net-web-api,C#,Asp.net,Asp.net Mvc,Asp.net Mvc 4,Asp.net Web Api,如何在没有循环的视图中将模型类转换为动态控件?我想创建if checkbox而不是show checkbox control if dropdown而不是show dropdown if text而不是create textbox public class DataSources { public int Id { get; set; } [DisplayName("text")] public string Name { get; s

如何在没有循环的视图中将模型类转换为动态控件?我想创建if checkbox而不是show checkbox control if dropdown而不是show dropdown if text而不是create textbox

 public class DataSources
    {

        public int Id { get; set; }
        [DisplayName("text")]
        public string Name { get; set; }
        [DisplayName("text")]
        public string Phone { get; set; }
        [DisplayName("checkbox")]
        public bool Active { get; set; }

        [DisplayName("dropdown")]
        //[Column(TypeName = "dropdown")]
        public List<DataSources> MyList { get; set; }

    }
公共类数据源
{
公共int Id{get;set;}
[显示名称(“文本”)]
公共字符串名称{get;set;}
[显示名称(“文本”)]
公用字符串电话{get;set;}
[显示名称(“复选框”)]
公共bool活动{get;set;}
[显示名称(“下拉列表”)]
//[列(TypeName=“dropdown”)]
公共列表MyList{get;set;}
}

您可以使用
编辑器for
HTML帮助程序,它根据模型类型绑定控件。例如,如果类型是字符串,则它将采用textbox;如果类型是列表,则它将绑定下拉列表:

@Html.EditorFor(model => model.Propertyname)

您可以在此处找到详细说明的链接-

该类不支持任何此类属性来动态管理这些内容。实现这一点的一种方法如下:

我的ActionResult方法如下(将此作为示例数据):

这对我有用。 您需要创建自己的HTML助手来更有效地实现这一点


让我知道这是否有帮助

我知道您想要什么,您希望显示控件仅使用一行,而不是使用此行

@model MVCApp.Models.DataSource
@Html.EditorForModel()

通过使用它,它会自动创建动态控件。

请澄清第二句中的意思。你的意思是如果选中了复选框,那么会出现一个附加的复选框和下拉菜单吗?[DisplayName(“复选框”)]我这样写是为了理解,这个模型类生成文本框,如果数据类型为bool,则生成复选框,如果数据类型为list,则生成下拉菜单提供更多详细信息。问题不清楚,您可以添加如下类:@Html.EditorFor(x=>x.MyProperty,new{htmlAttributes=new{@class=“MyCssClass”})。我不明白你说的是完整类,我说的是模型类,没有添加属性名。只有一行用于不带loopClass的创建控件,只有用于设置显示名称、验证的属性。我不记得任何用于动态生成控件的属性。谢谢,伙计,我想用这样的东西,我用它来工作。
@model MVCApp.Models.DataSource

@if (Html.DisplayNameFor(x => x.Name).ToString() == "text")
{
    @Html.TextBoxFor(model => model.Name)
}
@if (Html.DisplayNameFor(x => x.Phone).ToString() == "text")
{
    @Html.TextBoxFor(model => model.Phone)
}

@if (Html.DisplayNameFor(x => x.Active).ToString() == "checkbox")
{
    @Html.CheckBoxFor(model => model.Active)
}
@if (Html.DisplayNameFor(x => x.MyList).ToString() == "dropdown")
{
    @Html.DropDownListFor(m => m.Id,
                new SelectList(Model.MyList.Select(x=>x.Name)),
                "-- Select --")
}
@model MVCApp.Models.DataSource
@Html.EditorForModel()