asp.net mvc4中的动态创建控件
本文关键字:动态 创建 控件 net mvc4 asp | 更新日期: 2023-09-27 18:22:02
我试图在asp.net mvc4中动态创建控件,但遇到了一些问题,也需要一些建议。下面的语句不起作用,它显示了"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>