簡體   English   中英

如何在不帶循環或jquery的mvc中使用模型類添加動態控件

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM