繁体   English   中英

在ASP.NET MVC4中动态创建控件

[英]Dynamic creating controls in asp.net mvc4

我试图在asp.net mvc4中动态创建控件,但遇到一些问题,也需要一些建议。 下面的以下语句不起作用,它向我显示“row.Options”@for下面的错误行(row.Options中的var o)

除此之外,是否可以动态创建dropdownlist或dropdownlistfor(如果是),那么如何根据当前情况分配名称和值?

视图

            @foreach(var row in Model.Controls) {
                var i = 0;
                <div>                        
                     <label>@row.Caption</label>
                     @if (row.ControlType == "text") {
                        <input type="text" name="@row.Name" />
                     } else if (row.ControlType == "select") {

                        <select name="@row.Name">
                            @for (var o in row.Options ) {
                                <option value="@o.Value>">@o.Text</option>
                            }
                        </select>                             
                     }                                          
                </div>  
                i++;
            }
            </ul>

查看模型

public List<SelectListItem> MembershipTypeList { get; set; }

public class Controls
{
    public string Caption {get; set;}
    public string ControlType {get; set;} 
    public string Name {get; set;}
    public List<SelectListItem> Options { get; set; }
}

控制器片段

    public ActionResult Signup()
    {
        signup.MembershipTypeList.Add(new SelectListItem()
        {
            Text = "Student  £18.00",
            Value = "Student"
        });

        signup.MembershipTypeList.Add(new SelectListItem()
        {
            Text = "Associate  £18.00",
            Value = "Associate"
        });

        signup.Controls = new List<Controls>();
        signup.Controls.Add(new Controls() { Caption = "Age", ControlType = "text", Name = "txtage" });
        signup.Controls.Add(new Controls() { Caption = "Name", ControlType = "text", Name = "txtname" });
        signup.Controls.Add(new Controls() { Caption = "Membership", ControlType = "select", Name = "txtmembership", Options = signup.MembershipTypeList });

        return View("Signup", signup);
}

我认为可能是造成此问题的一个额外尖括号,请尝试更改为:

<option value="@o.Value">@o.Text</option>

对于初学者,您的代码在这里无效:

<select name="@row.Name">
    @for (var o in row.Options ) {
        <option value="@o.Value>">@o.Text</option>
    }
</select> 

@o.Value>删除“ >

按原样渲染会破坏html。

固定:

<select name="@row.Name">
    @foreach (var o in row.Options ) {
        <option value="@o.Value">@o.Text</option>
    }
</select> 

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM