如何在没有循环或jquery的mvc中使用模型类添加动态控件
Posted
技术标签:
【中文标题】如何在没有循环或jquery的mvc中使用模型类添加动态控件【英文标题】:How to add dynamic controls using model class in mvc without loop or jquery 【发布时间】:2019-08-23 15:38:44 【问题描述】:如何在没有循环的情况下将模型类转换为视图中的动态控件?我想创建 if checkbox 而不是 show checkbox control if dropdown 而不是 show dropdown if text 而不是创建文本框。
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;
【问题讨论】:
请澄清您在第二句话中的意思。你的意思是如果选中了一个复选框,那么会出现一个额外的复选框和下拉菜单? 提供更多细节。问题不清楚 【参考方案1】:您可以使用Editorfor
html 助手,它根据模型类型绑定控件。例如,如果类型是字符串,那么它将采用文本框,如果是列表,它将绑定下拉列表:
@Html.EditorFor(model => model.Propertyname)
详细解释可以在这里找到链接-https://www.steelcm.com/how-to-use-the-html-editor-for-method/
【讨论】:
您可以添加如下类:@Html.EditorFor(x=> x.MyProperty, new htmlAttributes = new @class= "MyCssClass" )。当你说完整的课程时,我不明白。 我说的是那个模型类,没有添加属性名称。只有一行用于创建没有循环的控件 类只有用于设置显示名称、验证的属性。我不记得任何用于动态生成控件的属性。【参考方案2】:该类不支持任何此类属性来动态管理这些东西。实现这一点的一种方法如下:
我的 ActionResult 方法是这样的(将其视为示例数据):
DataSource model = new DataSource();
model.MyList = new List<DataSource>();
var data = new DataSource()
Id = 1,
Name = "test"
;
model.MyList.Add(data);
return View(model);
这会将数据返回给视图。您的视图应如下所示:
@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 --")
这对我有用。 您需要创建自己的 HTML 助手来更有效地实现这一目标。
如果这有帮助,请告诉我!
【讨论】:
【参考方案3】:我明白你想要什么,你想显示控件只使用一行而不是你可以使用这个
@model MVCApp.Models.DataSource
@Html.EditorForModel()
通过使用它自动创建动态控件。
【讨论】:
谢谢我想用这样的东西,我用它来工作。以上是关于如何在没有循环或jquery的mvc中使用模型类添加动态控件的主要内容,如果未能解决你的问题,请参考以下文章
如何在 jQuery $.ajax() 发布请求中向 MVC 控制器方法发送模型
通过 Jquery 保存到 MVC 模型输入后如何在 Html 中显示记录