[英]MVC 5 add dynamic fields to form using jquery and save it to model
[英]How to add dynamic controls using model class in mvc without loop or jquery
如何在沒有循環的情況下將模型類轉換為視圖中的動態控件? 我想創建如果復選框比顯示復選框,則控件比下拉菜單,如果文本比創建文本框,則比顯示下拉控件。
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; }
}
您可以使用Editorfor
幫助器,該幫助器根據模型類型綁定控件。 例如,如果類型是字符串,則它將帶文本框,如果是列表,則將綁定下拉列表:
@Html.EditorFor(model => model.Propertyname)
您可以在此處找到有關詳細說明的鏈接-https: //www.steelcm.com/how-to-use-the-html-editor-for-method/
我知道您想要什么,您只想顯示控件僅使用一行就可以使用
@model MVCApp.Models.DataSource
@Html.EditorForModel()
通過使用其自動創建動態控件。
該類不支持任何此類屬性來動態管理這些內容。 解決此問題的一種方法如下:
我的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幫助器才能更有效地實現這一目標。
讓我知道這是否有幫助!
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.