How to covert this to for loop array c#.net

时间:2016-07-11 19:03:19

标签: c# asp.net-mvc

I am trying to create a dynamic control based in MVC,

I got a solution to implement.. it working fine..

with this code

public class DynamicControlViewModel
    {
        public ControlViewModel[] Controls { get; set; }
    }

    public abstract class ControlViewModel
    {
        public abstract string Type { get; }
        public bool Visible { get; set; }
        public string Label { get; set; }
        public string Name { get; set; }
    }

    public class TextBoxViewModel : ControlViewModel
    {
        public override string Type
        {
            get { return "textbox"; }
        }
        public string Value { get; set; }
    }

    public class CheckBoxViewModel : ControlViewModel
    {
        public override string Type
        {
            get { return "checkbox"; }
        }
        public bool Value { get; set; }
    }

    public class DropDownListViewModel : TextBoxViewModel
    {
        public override string Type
        {
            get { return "ddl"; }
        }
        public SelectList Values { get; set; }
    }

This is the way i am calling the object

public ActionResult Index()
        {
            return View(GetControls1());
        }

public DynamicControlViewModel GetControls1()
        {

            var model1 = new DynamicControlViewModel
            {
                Controls = new ControlViewModel[] {
                    new DropDownListViewModel{Visible = true,Label = "drop label",Name = "DropDown1",Values = new SelectList(new[]{new { Value = "1", Text = "text 1" },new { Value = "2", Text = "text 2" },new { Value = "3", Text = "text 3" },}, "Value", "Text", "2")},
                    new TextBoxViewModel { Visible = true, Label = "label 1", Name = "TextBox1", Value = "value of textbox" },
                    new CheckBoxViewModel { Visible = true, Label = "CheckBox label 1", Name = "CheckBox1", Value = true},
                    new TextBoxViewModel { Visible = true, Label = "label 2", Name = "TextBox2", Value = "value of textbox" }}
            };

            return model1;
        }

Here,

I need to use for loop to create the dynamic control..

here is my code, getting error

     public DynamicControlViewModel GetControls()
        {
            var model = new DynamicControlViewModel { };
            var Controls1 = new ControlViewModel[] { };
            var s = model.Controls;
//int i=0;
//for loop start
            Controls1[0] = new TextBoxViewModel { Visible = true, Label = "label 2", Name = "TextBox2", Value = "value of textbox" };
            Controls1[1] = new TextBoxViewModel { Visible = true, Label = "label 3", Name = "TextBox3", Value = "value of textbox" };
            Controls1[2] = new CheckBoxViewModel { Visible = true, Label = "CheckBox label 1", Name = "CheckBox1", Value = true },
            Controls1[3] = new DropDownListViewModel { Visible = true, Label = "drop label", Name = "DropDown1", Values = new SelectList(new[] { new { Value = "1", Text = "text 1" }, new { Value = "2", Text = "text 2" }, new { Value = "3", Text = "text 3" }, }, "Value", "Text", "2") },          

//loop end
        var model1 = new DynamicControlViewModel
        {
            Controls = Controls1
        };
        return model1;
    }

1 个答案:

答案 0 :(得分:0)

问题是你首先要定义一个大小为0的数组(即用0个单元来保存值):

List<ControlViewModel>

之后,您尝试分配给阵列的第一个,第二个,第三个和第四个单元格,这些单元格不存在。因此,您会收到错误。

因此,您应该使用var Controls1 = new ControlViewModel[4]; 或初始化正确长度的数组:

Launch Standalone SDK Manager