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